当前位置: 移动技术网 > IT编程>开发语言>.net > BIM工程信息管理新系统- 系统管理模块

BIM工程信息管理新系统- 系统管理模块

2019年08月02日  | 移动技术网IT编程  | 我要评论

公明,兔女郎锐雯h,周立波春晚

系统管理模块

1、实体类

  public partial class t_role
    {
        public string roleid { get; set; }
        public string rolename { get; set; }
        public string commentary { get; set; }
        public string codeno { get; set; }
        public string customno { get; set; }
        public string spellno { get; set; }
        public string strokeno { get; set; }
    }
   public partial class t_role_privilege
    {
        public string roleid { get; set; }
        public string privid { get; set; }
        public string barcaption { get; set; }
        public nullable<int> barorder { get; set; }
        public string isendnode { get; set; }
        public nullable<int> istoolbar { get; set; }
        public string nodeid { get; set; }
        public string parentnode { get; set; }
        public int id { get; set; }
    }
  public partial class t_operator
    {
        public string operatorid { get; set; }
        public string depid { get; set; }
        public string operatorname { get; set; }
        public string passwrod { get; set; }
        public string roleid { get; set; }
        public string userid { get; set; }
        public string cellphone { get; set; }
        public string emial { get; set; }
        public nullable<int> logincount { get; set; }
        public string lastlogintime { get; set; }
        public nullable<int> state { get; set; }
        public string buildman { get; set; }
        public nullable<system.datetime> builddate { get; set; }
        public string editman { get; set; }
        public nullable<system.datetime> editdate { get; set; }
    }
  public partial class t_operator_privilege
    {
        public string barcaption { get; set; }
        public nullable<int> barorder { get; set; }
        public string isendnode { get; set; }
        public nullable<int> istoolbar { get; set; }
        public string nodeid { get; set; }
        public string operatorid { get; set; }
        public string parentnode { get; set; }
        public string privid { get; set; }
        public int id { get; set; }
    }
public partial class t_organization
    {
        public string f_orgid { get; set; }
        public string f_orgname { get; set; }
        public string f_orgmanager { get; set; }
        public nullable<system.datetime> f_builddate { get; set; }
        public string f_buildman { get; set; }
        public string f_tellphonenum { get; set; }
        public string f_address { get; set; }
        public nullable<bool> f_state { get; set; }
        public string f_parentid { get; set; }
    }
  public partial class t_wholemenu
    {
        public string nodeid { get; set; }
        public string nodename { get; set; }
        public string parentnode { get; set; }
        public string isendnode { get; set; }
        public string pluginid { get; set; }
        public string commentary { get; set; }
        public string disporder { get; set; }
        public nullable<int> type { get; set; }
        public string groupbyname { get; set; }
        public string imageico { get; set; }
        public nullable<int> typeshow { get; set; }
        public nullable<bool> isstartup { get; set; }
    }
public partial class sys_buttons
    {
        public int keyid { get; set; }
        public string buttoncaption { get; set; }
        public int sortnum { get; set; }
        public string iconcls { get; set; }
        public string iconurl { get; set; }
        public string buttontag { get; set; }
        public string remark { get; set; }
        public string buttonhtml { get; set; }
        public string buggongroup { get; set; }
        public int state { get; set; }
        public string tooltip { get; set; }
    }
 public partial class sys_button_privilege
    {
        public int sysid { get; set; }
        public nullable<int> buttonid { get; set; }
        public string operatorid { get; set; }
        public string roleid { get; set; }
        public string nodeid { get; set; }
    }
 public partial class sys_wholemenubuttons
    {
        public int keyid { get; set; }
        public string menuid { get; set; }
        public nullable<int> buttonid { get; set; }
        public nullable<int> sortnum { get; set; }
        public string buttonname { get; set; }
    }

2、服务器契约

服务契约代码

[servicecontract(namespace = "www.kubim.com/operatorserivce")]
public interface ioperationpurviewservice
{
 #region 操作人员管理

        //添加人员
        [operationcontract(isinitiating = true)]
        bool insertoperatorinfo(t_operator operatorentity);

        ///<summary>
        ///修改操作t_operator 
        /// </summary>
        [operationcontract(isinitiating = true)]
        bool updatet_operator(t_operator model);

        ///<summary>
        ///修改操作t_operator 
        /// </summary>
        [operationcontract(isinitiating = true)]
        t_operator t_operatorbyid(string operatorid);

        ///<summary>
        ///删除操作t_operator 
        ///  </summary>
        [operationcontract(isinitiating = true)]
        bool deletet_operator(string id);

        //获取最大人员编号
        [operationcontract(isinitiating = true)]
        int getmaxoperatorid();

        //获取所有人员
        [operationcontract(isinitiating = true)]
        iqueryable<t_operator> getoperatoralllist();

        //根据用户登录的id查询
        [operationcontract(isinitiating = true)]
        list<findmenurigthbyoperator> getrightoperatorbyoperatorid(string operatorid);

        //根据用户登录的id查询
        [operationcontract(isinitiating = true)]
        list<findmenurigthbyoperator> getrightoperatorbyroleid(string roleid);

        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="loginusername">登录名称</param>
        /// <param name="loginpassword">登录密码</param>
        /// <returns></returns>
        [operationcontract(isinitiating = true)]
        bool loginuser(string loginusername, string loginpassword);

        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="loginusername">登录名称</param>
        /// <param name="loginpassword">登录密码</param>
        /// <param name="log">登录其它信息</param>
        /// <returns>返回字符串信息</returns>
        [operationcontract(isinitiating = true)]
        string login(string loginusername, string loginpassword, params string[] log);


        /// <summary>
        /// 用户登陆
        /// </summary>
        /// <param name="loginusername">name of the login user.</param>
        /// <param name="loginpassword">the login password.</param>
        /// <param name="log">the log.</param>
        /// <returns>用户信息.</returns>
         [operationcontract(isinitiating = true)]
        t_operator loginoperator(string loginusername, string loginpassword, params string[] log);

        /// <summary>
        /// 用户登录次数添加
        /// </summary>
        /// <param name="operatorid">操作员id</param>
        [operationcontract(isinitiating = true)]
        bool operatoraddlogincount(t_operator operatorid);

        /// <summary>
        /// 获取人员信息
        /// </summary>
        /// <param name="departid">以部门编号</param>
        [operationcontract(isinitiating = true)]
        list<t_operator> getoperatorlistbydepartid(string departid);


        /// <summary>
        /// 判斷用戶登陸名稱是否存在
        /// determines whether [is existe login user name] [the specified login user name].
        /// </summary>
        /// <param name="loginusername">name of the login user.</param>
        /// <returns><c>true</c> if [is existe login user name] [the specified login user name]; otherwise, <c>false</c>.</returns>
         [operationcontract(isinitiating = true)]
        bool isexisteloginusername(string loginusername);

        #endregion
        #region 用户角色管理

        //新增用户角色
        [operationcontract(isinitiating = true)]
        bool insertroleinfo(t_role roleentity);

        /// <summary>
        /// 获取用户角色
        /// </summary>
        /// <param name="roleid">获取用户信息</param>
        /// <returns></returns>
        [operationcontract(isinitiating = true)]
        t_role t_rolebyid(string roleid);

        ///<summary>
        ///修改操作t_role 
        /// </summary>
        [operationcontract(isinitiating = true)]
        bool updatet_role(t_role model);

        ///<summary>
        ///删除操作t_role 
        /// </summary>
        [operationcontract(isinitiating = true)]
        bool deletet_role(string id);

        //获取用户角色人员信息
        [operationcontract(isinitiating = true)]
        list<findrolerigthbyrole> getrolerigthbyrolecode(string rolecode);

        //获取所有角色
        [operationcontract(isinitiating = true)]
        list<t_role> getrolealllist();

        //获取最大角色编号
        [operationcontract(isinitiating = true)]
        int getmaxroleid();

        /// <summary>
        /// 修改用户密码
        /// </summary>
        /// <param name="oldpwd">旧的用户密码</param>
        /// <param name="newpwd">新的用户密码</param>
        /// <param name="userid">用户人员编号</param>
        /// <returns></returns>
        [operationcontract(isinitiating = true)]
        string changeuserpwd(string oldpwd, string newpwd, string userid);

        #endregion
        #region 用户授权管理

        //新增用户权限信息
        [operationcontract(isinitiating = true)]
        void insertoperatorprivilegeinfo(t_operator_privilege operatorentity);

        //删除用户权限信息
        [operationcontract(isinitiating = true)]
        void deleteoperatorprivilegeinfobyoperatorid(string operatorid);

        #endregion
       #region 角色授权管理

        //新增角色权限 
        [operationcontract(isinitiating = true)]
        void inserttroleprivilege(t_role_privilege roleentity);

        //删除角色权限
        [operationcontract(isinitiating = true)]
        void deleteroleprivilegebyroleid(string roleid);

        /// <summary>
        /// 添加项目权限
        /// </summary>
        /// <param name="projectlimitses">项目权限信息</param>
        /// <param name="typeinfo">操作员/角色 operator/role</param>
        /// <param name="typeid">角色编号/用户编号</param>
        /// <returns>bool</returns>
        [operationcontract(isinitiating = true)]
        bool addprojectlimits(list<t_projectlimits> projectlimitses, string typeinfo, string typeid);
        /// <summary>
        /// 添加机构数据权限
        /// </summary>
        /// <param name="organizationprivileges">项目权限信息</param>
        /// <param name="typeinfo">操作员/角色 operator/role</param>
        /// <param name="typeid">角色编号/用户编号</param>
        /// <returns>bool</returns>
        [operationcontract(isinitiating = true)]
        bool addorgizationlimits(list<t_organization_privilege> organizationprivileges, string typeinfo, string typeid);

        /// <summary>
        /// 添加项目权限
        /// </summary>
        /// <param name="organizationprivileges">项目权限信息</param>
        /// <param name="typeinfo">操作员/角色 operator/role</param>
        /// <param name="typeid">角色编号/用户编号</param>
        /// <returns>bool</returns>
        [operationcontract(isinitiating = true)]
        bool addlinemileagelimits(list<linemileage_privilege> organizationprivileges, string typeinfo, string typeid);
        #endregion
        #region 菜单管理

        //添加菜单
        [operationcontract(isinitiating = true)]
        void inserttwholemenu(t_wholemenu menuentity);
        //修改菜单
        [operationcontract(isinitiating = true)]
        bool updatetwholemenu(t_wholemenu menuentity);

        //获取所有菜单
        [operationcontract(isinitiating = true)]
        list<t_wholemenu> getallwholemenulist();

        //获取父菜单的id
        [operationcontract(isinitiating = true)]
        int gettwholemenunodeid();

        //获取子菜单的id
        [operationcontract(isinitiating = true)]
        int gettwholemenunodechildrenid();

        //获取最大的菜单
        [operationcontract(isinitiating = true)]
        int getmaxwholemenuid(string parentnode);

        //删除父节点下所有菜单
        [operationcontract(isinitiating = true)]
        void deletewholemenu(string parentid);

        //根据菜单编号删除下面所有信息
        [operationcontract(isinitiating = true)]
        void deletewholemenunode(string nodeid);

        //保存用户权限
        [operationcontract(isinitiating = true)]
        bool adduserright(datatable dt, string type, string typeid);

        #endregion
     #region 系统字典管理

        //添加字典信息
        [operationcontract(isinitiating = true)]
        bool insertdectionary(t_dictionaryinfo tinfo);

        //修改字典信息
        [operationcontract(isinitiating = true)]
        bool updatedectionary(t_dictionaryinfo tinfo);

        //获取所有字典信息
        [operationcontract(isinitiating = true)]
        list<t_dictionaryinfo> getalldictonarylist();
        //根据字典类型
        [operationcontract(isinitiating = true)]
        list<t_dictionaryinfo> searchdictionaryoftype(string fdictonarytype);

        //根据字典类型
        [operationcontract()]
        list<t_dictionaryinfo> searchdictionaryoftypecode(string typecode);


        //获取父菜单的编号
        [operationcontract(isinitiating = true)]
        int getmaxdictionaryparentcode();

        //获取子菜单的编号
        [operationcontract(isinitiating = true)]
        int getdictionarynodechildrencode();

        //获取最大的菜单
        [operationcontract(isinitiating = true)]
        int getmaxdictionarycode(string parentcode);

        //删除子菜单
        [operationcontract(isinitiating = true)]
        bool deletedictionarychildrencode(string dictonarycode);
        //删除父菜和下面的所有的子菜单
        bool deletedictonarycode(string parnentdictonarycode);

        //数据库名称
        [operationcontract(isinitiating = true)]
        datatable getalltablenamebydb(string databasename);

        //获取父节点下的子节点的count
        [operationcontract(isinitiating = true)]
        int getdictionarycountbyparentcode(string parentcode);

        //根据字典编号获取明细信息
        [operationcontract(isinitiating = true)]
        t_dictionaryinfo gettdictonaryinfo(string dictonarycode);




        #endregion
   #region 组织机构

        /// <summary>
        /// 新增操作t_organization
        /// </summary>
        /// <param name="model">the model.</param>
        /// <param name="operatorid">the operatorid.</param>
        /// <returns><c>true</c> if xxxx, <c>false</c> otherwise.</returns>
        [operationcontract(isinitiating = true)]
        bool insertt_organization(t_organization model,string operatorid);

        ///<summary>
        ///修改操作t_organization 
        /// </summary>
        [operationcontract(isinitiating = true)]
        bool updatet_organization(t_organization model);

        ///<summary>
        ///删除操作t_organization 
        /// </summary>
        [operationcontract(isinitiating = true)]
        bool deletet_organization(string id);

        ///<summary>
        ///获取所有数据t_organization 
        /// </summary>
        [operationcontract(isinitiating = true)]
        list<t_organization> gett_organizationlistdata();

        /// <summary>
        /// 根据用户判断当前组织机构信息 </summary>
        /// <param name="operatorid"></param>
        /// <returns></returns>
        [operationcontract(isinitiating = true)]
        iqueryable<t_organization> gett_organizationby(string operatorid);


        #endregion
      #region 机构权限
        /// <summary>
        ///根据sql语句查询返回iqueryablet_organization_privilege
        /// <param name="sql">t_organization_privilegesql语句</param>
        /// </summary>
        [operationcontract]
        iqueryable<t_organization_privilege> gett_organization_privilegebysql(string sql, params object[] obj);

        /// <summary>
        ///获取实体t_organization_privilege
        /// <param name="id">主键编号</param>
        /// </summary>
        [operationcontract]
        list<t_organization_privilege> gett_organization_privilegebyid(string id);

        /// <summary>
        ///修改实体t_organization_privilege
        /// <param name="entity">t_organization_privilege实体</param>
        /// </summary>
        [operationcontract]
        bool updatet_organization_privilege(list<t_organization_privilege> entity);

        /// <summary>
        ///新增实体t_organization_privilege
        /// <param name="entity">t_organization_privilege实体</param>
        /// </summary>
        [operationcontract]
        bool createt_organization_privilege(list<t_organization_privilege> entity, string operatorid);


        /// <summary>
        ///新增实体t_organization_privilege
        /// <param name="entity">t_organization_privilege实体</param>
        /// </summary>
        [operationcontract]
        bool createt_organization_privilegeentity(t_organization_privilege entity);

        /// <summary>
        ///删除t_organization_privilege
        /// <param name="id">主键编号</param>
        /// </summary>
        [operationcontract]
        bool deletet_organization_privilege(list<int> id);



        /// <summary>
        ///获取实体linemileage_privilege
        /// <param name="id">主键编号</param>
        /// </summary>
        [operationcontract]
        linemileage_privilege getlinemileage_privilegebyid(string id);

        /// <summary>
        ///修改实体linemileage_privilege
        /// <param name="entity">linemileage_privilege实体</param>
        /// </summary>
        [operationcontract]
        bool updatelinemileage_privilege(linemileage_privilege entity);

        /// <summary>
        ///新增实体linemileage_privilege
        /// <param name="entity">linemileage_privilege实体</param>
        /// </summary>
        [operationcontract]
        bool createlinemileage_privilege(list<linemileage_privilege> entity, string operatorid);

        /// <summary>
        ///删除linemileage_privilege
        /// <param name="id">主键编号</param>
        /// </summary>
        [operationcontract]
        bool deletelinemileage_privilege(string id);

        /// <summary>
        /// 获取线路里程权限信息
        /// </summary>
        /// <param name="strsql">sql</param>
        /// <param name="obj">参数</param>
        /// <returns>iqueryable</returns>
        [operationcontract]
        iqueryable<t_projectlimits> gett_projectlimitsbysql(string strsql, params object[] obj);

        /// <summary>
        ///根据sql语句查询返回iqueryablelinemileage_privilege
        /// <param name="sql">linemileage_privilegesql语句</param>
        /// </summary>
        [operationcontract]
        iqueryable<linemileage_privilege> getlinemileage_privilegebysql(string sql, params cmdparameter[] obj);

        /// <summary>
        ///新增实体t_projectlimits
        /// <param name="entity">t_projectlimits实体</param>
        /// </summary>
        [operationcontract]
        bool createt_projectlimits_privilege(list<t_projectlimits> entity, string operatorid);

        /// <summary>
        /// 获取当前用户的信息
        /// </summary>
        /// <param name="operatorid"></param>
        /// <returns></returns>
        [operationcontract]
        iqueryable<t_projectlimits> gett_projectlimitsbyoperator(string operatorid);

        #endregion
        #region 系统菜单按钮


        /// <summary>
        ///获取实体sys_buttons
        /// <param name="id">主键编号</param>
        /// </summary>
        [operationcontract]
        sys_buttons getsys_buttonsbyid(int id);

        /// <summary>
        ///修改实体sys_buttons
        /// <param name="entity">sys_buttons实体</param>
        /// </summary>
        [operationcontract]
        bool updatesys_buttons(sys_buttons entity);

        /// <summary>
        ///新增实体sys_buttons
        /// <param name="entity">sys_buttons实体</param>
        /// </summary>
        [operationcontract]
        bool createsys_buttons(sys_buttons entity);

        /// <summary>
        ///删除sys_buttons
        /// <param name="id">主键编号</param>
        /// </summary>
        [operationcontract]
        bool deletesys_buttons(int id);

        [operationcontract]
        iqueryable<sys_wholemenubuttons> getsys_wholemenubuttonsbysql(string sql, params cmdparameter[] obj);
        /// <summary>
        ///根据sql语句查询返回iqueryablesys_buttons
        /// <param name="sql">sys_buttonssql语句</param>
        /// </summary>
        [operationcontract]
        iqueryable<sys_buttons> getsys_buttonsbysql(string sql, params cmdparameter[] obj);

        /// <summary>
        /// 返回菜单的按钮
        /// </summary>
        /// <param name="menuid">菜单编号</param>
        /// <returns></returns>
        [operationcontract]
        list<twholemenubutton> gettwholemenubuttons(string menuid);

        /// <summary>
        /// 返回所有的菜单信息
        /// </summary>
        /// <returns></returns>
        [operationcontract]
        list<twholemenubutton> gettwholemenubuttonsalllist();
        /// <summary>
        /// 获取对应的权限
        /// </summary>
        /// <param name="operatorid">操作员id</param>
        /// <returns></returns>
        [operationcontract]
        list<twholemenubutton> getbuttonlimitsallist(string operatorid);

        /// <summary>
        /// 获取对应的权限
        /// </summary>
        /// <param name="roleid">角色id</param>
        /// <returns></returns>
        [operationcontract]
        list<twholemenubutton> getbuttonlimitstrolealllist(string roleid);
        /// <summary>
        ///新增实体sys_wholemenubuttons
        /// <param name="entity">sys_wholemenubuttons实体</param>
        /// </summary>
        [operationcontract]
        bool createsys_wholemenubuttons(list<sys_wholemenubuttons> entity);

        /// <summary>
        ///删除sys_wholemenubuttons
        /// <param name="nodeid">主键编号</param>
        /// </summary>
        [operationcontract]
        bool deletesys_wholemenubuttons(string nodeid);

        /// <summary>
        /// 根据用户获取项目权限
        /// </summary>
        /// <param name="operatorid">操作员编号</param>
        /// <returns></returns>
        [operationcontract]
        iqueryable<projectslimits> getprojectslimitsesbyoperator(string operatorid);

        /// <summary>
        /// 根据用户编号获取对应的线程里程信息
        /// </summary>
        /// <param name="operatorid">操作员编号</param>
        /// <param name="projectkey">项目编号</param>
        /// <returns></returns>
        [operationcontract]
        ienumerable<linemileagelimits> getlinemileagelimitsesbyoperator(string operatorid, string projectkey);

        #endregion
}

3、服务契约实现

服务类代码

    //服务
    /// <summary>
    /// class operationservice.
    /// </summary>
    [servicebehavior(instancecontextmode = instancecontextmode.percall)]
    public class operationservice : ioperationpurviewservice, idisposable
    {
        private readonly rbim5d_projectcontext _dbcontext;
        public operationservice()
        {
            _dbcontext = new rbim5d_projectentities();
        }
 #region 操作人员管理
        public bool insertoperatorinfo(t_operator operatorentity)
        {
            try
            {

                _dbcontext.set<t_operator>().attach(operatorentity);
                _dbcontext.set<t_operator>().add(operatorentity);
                _dbcontext.savechanges();
            }
            catch (dbentityvalidationexception ex)
            {
                throw ex.innerexception;  
            }
            catch (dbexception ee)
            {
                throw ee.innerexception;
            }
            return true;
        }

        /// <summary>
        /// 修改操作t_operator
        /// </summary>
        /// <param name="model">the model.</param>
        /// <returns><c>true</c> if xxxx, <c>false</c> otherwise.</returns>
        public bool updatet_operator(t_operator model)
        {
            try
            {
                var category = _dbcontext.t_operator.firstordefault(o => o.operatorid == model.operatorid);
                if (category != null)
                {
                    category.operatorid = model.operatorid;
                    category.depid = model.depid;
                    category.operatorname = model.operatorname;
                    category.passwrod = model.passwrod;
                    category.roleid = model.roleid;
                    category.userid = model.userid;
                    category.cellphone = model.cellphone;
                    category.emial = model.emial;
                    category.state = model.state;
                    category.editman = model.editman;
                    category.editdate = model.editdate;
                }
                _dbcontext.savechanges();
            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
            return true;
        }

        /// <summary>
        /// 修改操作t_operator
        /// </summary>
        /// <param name="operatorid">the operatorid.</param>
        /// <returns>t_operator.</returns>
        public t_operator t_operatorbyid(string operatorid)
        {
            try
            {
                return _dbcontext.set<t_operator>().firstordefault(o => o.operatorid == operatorid && o.state == 0);
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        /// 删除操作t_operator
        /// </summary>
        /// <param name="id">the identifier.</param>
        /// <returns><c>true</c> if xxxx, <c>false</c> otherwise.</returns>
        public bool deletet_operator(string id)
        {
            try
            {

                t_operator category = _dbcontext.t_operator.first(o => o.operatorid == id);
                return lu.dal.basedal<t_operator>.managercontent(_dbcontext).del(category);

            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
        }

        /// <summary>
        /// gets the maximum operator identifier.
        /// </summary>
        /// <returns>system.int32.</returns>
        public int getmaxoperatorid()
        {


            try
            {
                const string strsql = "select max(convert(int,operatorid)) from t_operator";
                return _dbcontext.database.sqlquery<int>(strsql).first();

            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

        }

        public iqueryable<t_operator> getoperatoralllist()
        {
            try
            {
                return _dbcontext.t_operator.where(o => o.state == 0);
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        /// gets the right operator by operator identifier.
        /// </summary>
        /// <param name="operatorid">the operatorid.</param>
        /// <returns>list&lt;findmenurigthbyoperator&gt;.</returns>
        public list<findmenurigthbyoperator> getrightoperatorbyoperatorid(string operatorid)
        {
            try
            {
                var list = new list<findmenurigthbyoperator>();

                {
                    var query = from a in _dbcontext.t_operator_privilege
                                join b in _dbcontext.t_wholemenu on a.nodeid equals b.nodeid
                                where a.operatorid == operatorid
                                select new
                                    {
                                        a.operatorid,
                                        parentnode1 = a.parentnode,
                                        a.nodeid,
                                        a.isendnode,
                                        a.privid,
                                        a.istoolbar,
                                        a.barorder,
                                        a.barcaption,
                                        b.nodename,
                                        b.parentnode,
                                        b.pluginid,
                                        b.commentary,
                                        b.disporder,
                                        b.type,
                                        b.groupbyname,
                                        b.imageico,
                                        b.typeshow,
                                        b.isstartup
                                    };
                    if (query.any())
                    {
                        list.addrange(query.tolist().select(item => new findmenurigthbyoperator
                            {
                                barcaption = item.barcaption,
                                barorder = item.barorder,
                                commentary = item.commentary,
                                isendnode = item.isendnode,
                                istoolbar = item.istoolbar,
                                nodeid = item.nodeid,
                                nodename = item.nodename,
                                parentnode1 = item.parentnode1,
                                parentnode = item.parentnode,
                                pluginid = item.pluginid,
                                privid = item.privid,
                                groupbyname = item.groupbyname,
                                imageico = item.imageico,
                                typeshow = item.typeshow,
                                isstartup = item.isstartup,

                            }));

                    }

                } return list;
            }
            catch (entityexception e)
            {
                throw e.innerexception;
            }

        }

        /// <summary>
        /// gets the right operator by role identifier.
        /// </summary>
        /// <param name="roleid">the roleid.</param>
        /// <returns>list&lt;findmenurigthbyoperator&gt;.</returns>
        public list<findmenurigthbyoperator> getrightoperatorbyroleid(string roleid)
        {
            try
            {
                var list = new list<findmenurigthbyoperator>();

                {
                    var query = from a in _dbcontext.t_role_privilege
                                join b in _dbcontext.t_wholemenu on a.nodeid equals b.nodeid
                                where a.roleid == roleid
                                select new
                                {
                                    a.roleid,
                                    parentnode1 = a.parentnode,
                                    a.nodeid,
                                    a.isendnode,
                                    a.privid,
                                    a.istoolbar,
                                    a.barorder,
                                    a.barcaption,
                                    b.nodename,
                                    b.parentnode,
                                    b.pluginid,
                                    b.commentary,
                                    b.disporder,
                                    b.type,
                                    b.groupbyname,
                                    b.imageico,
                                    b.typeshow,
                                    b.isstartup
                                };
                    if (query.any())
                    {
                        list.addrange(query.tolist().select(item => new findmenurigthbyoperator
                        {
                            barcaption = item.barcaption,
                            barorder = item.barorder,
                            commentary = item.commentary,
                            isendnode = item.isendnode,
                            istoolbar = item.istoolbar,
                            nodeid = item.nodeid,
                            nodename = item.nodename,
                            parentnode1 = item.parentnode1,
                            parentnode = item.parentnode,
                            pluginid = item.pluginid,
                            privid = item.privid,
                            groupbyname = item.groupbyname,
                            imageico = item.imageico,
                            typeshow = item.typeshow,
                            isstartup = item.isstartup
                        }));

                    }

                } return list;
            }
            catch (entityexception e)
            {
                throw e.innerexception;
            }
        }

        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="loginusername">登录名称</param>
        /// <param name="loginpassword">登录密码</param>
        /// <returns><c>true</c> if xxxx, <c>false</c> otherwise.</returns>
        public bool loginuser(string loginusername, string loginpassword)
        {
            if (string.isnullorempty(loginusername) || string.isnullorempty(loginpassword))
                return false;
            try
            {

                // resharper disable implicitlycapturedclosure
                var queryexits = _dbcontext.t_operator.where(o => o.operatorid == loginusername);
                // resharper restore implicitlycapturedclosure
                if (queryexits.any())
                {
                    string password = encodehelper.desencrypt(loginpassword);
                    var querylogin = _dbcontext.t_operator.where(o => o.operatorid == loginusername && o.passwrod == password);
                    if (querylogin.any())
                    {
                        var firstordefault = querylogin.firstordefault();
                        if (firstordefault != null)
                            operatoraddlogincount(firstordefault);
                        return true;
                    }
                    return false;
                }


            }
            catch (entityexception)
            {
                return false;
            }
            return false;
        }

        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="loginusername">登录名称</param>
        /// <param name="loginpassword">登录密码</param>
        /// <param name="log">登录其它信息</param>
        /// <returns>返回字符串信息</returns>
        public string login(string loginusername, string loginpassword, params string[] log)
        {
            if (string.isnullorempty(loginusername) || string.isnullorempty(loginpassword))
                return "用户或密码不能为空!谢谢";
            try
            {
                t_operator queryexits = _dbcontext.t_operator.firstordefault(o => o.operatorid == loginusername);
                if (queryexits != null)
                {
                    if (queryexits.state == 0)
                    {
                        string password = encodehelper.desencrypt(loginpassword);
                        var querylogin = _dbcontext.t_operator.firstordefault(o => o.operatorid == loginusername && o.passwrod == password);
                        if (querylogin != null)
                        {
                            operatoraddlogincount(querylogin);

                            return "success";
                        }
                        return "密码与当前用户不匹配!请从新尝试!";
                    }
                    return "尊敬的用户您好!您的账户已经锁定或无效!请联系系统管理员!谢谢";
                }
                return "系统中没有查找到该用户!请查看用户名称是否正确!谢谢";
            }
            catch (entityexception ex)
            {
                loghelper.info("用户登录", ex);
                return "服务端数据库打开无法连接!请联系系统管理!谢谢";
            }
            catch (exception ex)
            {
                loghelper.info("用户登录", ex);
                return "登录失败!";
            }
        }

        /// <summary>
        /// 用户登陆
        /// </summary>
        /// <param name="loginusername">name of the login user.</param>
        /// <param name="loginpassword">the login password.</param>
        /// <param name="log">the log.</param>
        /// <returns>用户信息.</returns>
        public t_operator loginoperator(string loginusername, string loginpassword, params string[] log)
        {
            if (string.isnullorempty(loginusername) || string.isnullorempty(loginpassword))
                return null;
            try
            {
                string loginuser = loginusername.tolower();
                t_operator queryexits = _dbcontext.t_operator.firstordefault(o => o.operatorid.tolower() == loginuser || o.userid.tolower() == loginuser);
                if (queryexits != null)
                {
                    if (queryexits.state == 0)
                    {
                        string password = encodehelper.desencrypt(loginpassword);
                        if (queryexits.passwrod == password)
                        {
                            operatoraddlogincount(queryexits);

                            return queryexits;
                        }
                    }
                
                }
                return null;
            }
            catch (entityexception ex)
            {
                loghelper.info("用户登录", ex);
                throw ex;
            }
            catch (exception ex)
            {
                loghelper.info("用户登录", ex);
                throw ex;
            }
        }

        /// <summary>
        /// 用户登录次数添加
        /// </summary>
        /// <param name="operatorid">操作员id</param>
        /// <returns><c>true</c> if xxxx, <c>false</c> otherwise.</returns>
        public bool operatoraddlogincount(t_operator operatorid)
        {
            if (operatorid != null)
            {
                _dbcontext.sys_logs.add(new sys_logs
                {
                    businessname = "用户登录",
                    operationip = operatorid.operatorid,
                    operationtime = datetime.now
                });
                operatorid.logincount = operatorid.logincount == null ? 0 : operatorid.logincount + 1;
                operatorid.lastlogintime = datetime.now.tostring("yyyy-mm-dd hh:mm:ss");
            }
            _dbcontext.savechanges();

            return false;
        }

        /// <summary>
        /// 获取人员信息
        /// </summary>
        /// <param name="departid">以部门编号</param>
        /// <returns>list&lt;t_operator&gt;.</returns>
        public list<t_operator> getoperatorlistbydepartid(string departid)
        {
            try
            {
                return _dbcontext.set<t_operator>().where(@operator => @operator.depid == departid).tolist();

            }
            catch (entityexception e)
            {

                throw e.innerexception;
            }
        }

        /// <summary>
        /// 判斷用戶登陸名稱是否存在
        /// determines whether [is existe login user name] [the specified login user name].
        /// </summary>
        /// <param name="loginusername">name of the login user.</param>
        /// <returns><c>true</c> if [is existe login user name] [the specified login user name]; otherwise, <c>false</c>.</returns>
        public bool isexisteloginusername(string loginusername)
        {
            t_operator toperator = _dbcontext.t_operator.firstordefault(o => o.userid == loginusername);
            if (toperator != null)
                return true;
            return false;
        }

        /// <summary>
        /// gets the toperators by role identifier.
        /// </summary>
        /// <param name="roleid">the roleid.</param>
        /// <returns>list&lt;t_operator&gt;.</returns>
        list<t_operator> gettoperatorsbyroleid(string roleid)
        {
            try
            {
                return _dbcontext.set<t_operator>().where(o => o.roleid == roleid).tolist();
            }
            catch (sqlexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        /// 修改用户密码
        /// </summary>
        /// <param name="oldpwd">旧的用户密码</param>
        /// <param name="newpwd">新的用户密码</param>
        /// <param name="userid">用户人员编号</param>
        /// <returns>system.string.</returns>
        public string changeuserpwd(string oldpwd, string newpwd, string userid)
        {

            string password = encodehelper.desencrypt(oldpwd);
            var istrue = _dbcontext.t_operator.firstordefault(o => o.operatorid == userid && o.passwrod == password);
            if (istrue != null)
            {
                istrue.passwrod = encodehelper.desencrypt(newpwd);
                _dbcontext.savechanges();
            }
            else
            {
                return "当前的用户密码不正确!";
            }

            return "成功";
        }

        #endregion
   #region 用户权限管理

        public void insertoperatorprivilegeinfo(t_operator_privilege operatorentity)
        {

            try
            {
                //  _enity.attach(operatorentity);
                _dbcontext.set<t_operator_privilege>().add(operatorentity);
                //  _enity.objectstatemanager.changeobjectstate(operatorentity, entitystate.added);
                _dbcontext.savechanges();
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public void deleteoperatorprivilegeinfobyoperatorid(string operatorid)
        {

            try
            {
                //  _enity.executestorecommand("delete from  t_operator_privilege where operatorid=@operatorids", new sqlparameter("@operatorids", operatorid));
                var rsult = from fx in _dbcontext.t_operator_privilege where fx.operatorid == operatorid select fx;
                if (rsult.any())
                {
                    foreach (var privilege in rsult)
                    {
                        _dbcontext.t_operator_privilege.remove(privilege);
                    }
                    _dbcontext.savechanges();
                }
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }




        }

        #endregion
#region 用户角色

        //新增角色
        public bool insertroleinfo(t_role roleentity)
        {
            try
            {
                _dbcontext.t_role.add(roleentity);
                _dbcontext.savechanges();
                return true;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }


        }

        public t_role t_rolebyid(string roleid)
        {
            try
            {
                return _dbcontext.set<t_role>().firstordefault(o => o.roleid == roleid && o.codeno == "有效");
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        ///<summary>
        ///修改操作t_role 
        /// </summary>
        public bool updatet_role(t_role model)
        {
            try
            {

                var category = _dbcontext.t_role.firstordefault(o => o.roleid == model.roleid);
                if (category != null)
                {
                    category.roleid = model.roleid;
                    category.rolename = model.rolename;
                    category.commentary = model.commentary;
                    category.codeno = model.codeno;
                    category.customno = model.customno;
                    category.spellno = model.spellno;
                    category.strokeno = model.strokeno;
                }
                _dbcontext.savechanges();

            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
            return true;
        }
        ///<summary>
        ///删除操作t_role 
        /// </summary>
        public bool deletet_role(string model)
        {
            try
            {

                var category = _dbcontext.t_role.where(o => o.roleid == model);
                if (category.any())
                {
                    foreach (var item in category)
                    {
                        _dbcontext.set<t_role>().attach(item);
                        _dbcontext.set<t_role>().remove(item);
                    }
                    _dbcontext.savechanges();
                }

            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
            return true;
        }

        //返回角色权限信息
        public list<findrolerigthbyrole> getrolerigthbyrolecode(string rolecode)
        {
            var list = new list<findrolerigthbyrole>();

            var query = from a in _dbcontext.t_role_privilege
                        join b in _dbcontext.t_wholemenu on a.nodeid equals b.nodeid
                        where
                            a.roleid == rolecode
                        select new
                            {
                                a.roleid,
                                parentnode1 = a.parentnode,
                                a.nodeid,
                                a.isendnode,
                                a.privid,
                                a.istoolbar,
                                a.barorder,
                                a.barcaption,
                                b.nodename,
                                b.parentnode,
                                b.pluginid,
                                b.commentary,
                                b.disporder,
                                b.type,
                                b.groupbyname,
                                b.imageico,
                                b.typeshow
                            };
            if (query.any())
            {

                list.addrange(query.tolist().select(item => new findrolerigthbyrole
                {
                    barcaption = item.barcaption,
                    barorder = item.barorder,
                    commentary = item.commentary,
                    isendnode = item.isendnode,
                    istoolbar = item.istoolbar,
                    nodeid = item.nodeid,
                    nodename = item.nodename,
                    parentnode1 = item.parentnode1,
                    parentnode = item.parentnode,
                    pluginid = item.pluginid,
                    privid = item.privid,
                    groupbyname = item.groupbyname,
                    imageico = item.imageico,
                    typeshow = item.typeshow,
                    disporder = item.disporder
                }));


            }
            return list;
        }

        public list<t_role> getrolealllist()
        {
            try
            {
                return (from fx in _dbcontext.t_role select fx).tolist();
            }
            catch (entityexception ex)
            {

                loghelper.error(ex.message); throw ex.innerexception;
            }

        }

        public int getmaxroleid()
        {


            try
            {
                const string strsql = "select max(convert(int,roleid)) from t_role";
                return _dbcontext.database.sqlquery<int>(strsql).firstordefault();
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

        }
        #endregion
#region 用户角色权限管理

        public void inserttroleprivilege(t_role_privilege roleentity)
        {

            // _enity.attach(roleentity);
            try
            {
                _dbcontext.t_role_privilege.add(roleentity);
                //  _enity.objectstatemanager.changeobjectstate(roleentity, entitystate.added);
                _dbcontext.savechanges();
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

        }

        public void deleteroleprivilegebyroleid(string roleid)
        {
            try
            {
                _dbcontext.database.executesqlcommand("delete from t_role_privilege where roleid=@roleid", new sqlparameter("@roleid", roleid));
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public bool addprojectlimits(list<t_projectlimits> projectlimitses, string typeinfo, string typeid)
        {
            try
            {
                switch (typeinfo)
                {
                    case "operator":
                        string strsql = "delete from t_projectlimits where f_operatorid=@opid";
                        sqlparameter[] parms = new sqlparameter[]
                        {
                            new sqlparameter("@opid", typeid)
                        };
                        _dbcontext.database.executesqlcommand(strsql, parms);
                        _dbcontext.set<t_projectlimits>().addrange(projectlimitses);
                        break;
                    case "role":
                        string sqlrole = "delete from t_projectlimits where f_roleid=@opid";
                        sqlparameter[] parmsrole = new sqlparameter[]
                        {
                            new sqlparameter("@opid", typeid)
                        };
                        _dbcontext.database.executesqlcommand(sqlrole, parmsrole);

                        //获取该角色的操作员
                        datatable opdt = untity.listtodatatable(gettoperatorsbyroleid(typeid));
                        if (opdt.rows.count > 0)
                        {
                            foreach (datarow rows in opdt.rows)
                            {
                                string strsqloperator = "delete from t_projectlimits where f_operatorid=@optuser";
                                sqlparameter[] parmsoperator = new sqlparameter[]
                                        {
                                            new sqlparameter("@optuser", rows["operatorid"])
                                        };
                                _dbcontext.database.executesqlcommand(strsqloperator, parmsoperator);
                            }
                        }

                        foreach (var item in projectlimitses)
                        {
                            //添加角色信息
                            item.f_roleid = typeid;
                            item.f_operatorid = "";
                            _dbcontext.set<t_projectlimits>().add(item);
                            foreach (datarow rows in opdt.rows)
                            {
                                t_projectlimits  tp=new t_projectlimits()
                                {
                                    f_itemkey = item.f_itemkey,
                                    f_itemtext = item.f_itemtext,
                                    f_operatorid = rows["operatorid"].tostring(),
                                    f_roleid = typeid,
                                    f_sortid = item.f_sortid
                                };                
                               _dbcontext.set<t_projectlimits>().add(tp);
                            }
                        }
                        break;
                }
                _dbcontext.savechanges();
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            }
        }

        public bool addorgizationlimits(list<t_organization_privilege> organizationprivileges, string typeinfo, string typeid)
        {
            try
            {
                switch (typeinfo)
                {
                    case "operator":
                        string strsql = "delete from t_organization_privilege where f_operatorid=@opid";
                        sqlparameter[] parms = new sqlparameter[]
                        {
                            new sqlparameter("@opid", typeid)
                        };
                        _dbcontext.database.executesqlcommand(strsql, parms);
                        _dbcontext.set<t_organization_privilege>().addrange(organizationprivileges);
                        break;
                    case "role":
                        string sqlrole = "delete from t_organization_privilege where f_roleid=@opid";
                        sqlparameter[] parmsrole = new sqlparameter[]
                        {
                            new sqlparameter("@opid", typeid)
                        };
                        _dbcontext.database.executesqlcommand(sqlrole, parmsrole);

                        //获取该角色的操作员
                        datatable opdt = untity.listtodatatable(gettoperatorsbyroleid(typeid));
                        if (opdt.rows.count > 0)
                        {
                            foreach (datarow rows in opdt.rows)
                            {
                                string strsqloperator = "delete from t_organization_privilege where f_operatorid=@optuser";
                                sqlparameter[] parmsoperator = new sqlparameter[]
                                        {
                                            new sqlparameter("@optuser", rows["operatorid"])
                                        };
                                _dbcontext.database.executesqlcommand(strsqloperator, parmsoperator);
                            }
                        }

                        foreach (var item in organizationprivileges)
                        {
                            //添加角色信息
                            item.f_operatorid = "";
                            item.f_roleid = typeid;
                            _dbcontext.set<t_organization_privilege>().add(item);
                            foreach (datarow rows in opdt.rows)
                            {
                                t_organization_privilege torg=new t_organization_privilege()
                                {
                                    f_keyid = item.f_keyid,
                                    f_operatorid = rows["operatorid"].tostring(),
                                    f_orgid = item.f_orgid,
                                    f_orgname = item.f_orgname,
                                    f_roleid = typeid,
                                    f_parentid = item.f_parentid
                                };
                                _dbcontext.set<t_organization_privilege>().add(torg);
                            }
                        }
                        break;
                }
                _dbcontext.savechanges();
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            }
        }

        public bool addlinemileagelimits(list<linemileage_privilege> organizationprivileges, string typeinfo, string typeid)
        {
            try
            {
                switch (typeinfo)
                {
                    case "operator":
                        string strsql = "delete from linemileage_privilege where operatorid=@opid";
                        sqlparameter[] parms = new sqlparameter[]
                        {
                            new sqlparameter("@opid", typeid)
                        };
                        _dbcontext.database.executesqlcommand(strsql, parms);
                        _dbcontext.set<linemileage_privilege>().addrange(organizationprivileges);
                        _dbcontext.savechanges();
                        break;
                    case "role":
                        string sqlrole = "delete from linemileage_privilege where roleid=@opid";
                        sqlparameter[] parmsrole = new sqlparameter[]
                        {
                            new sqlparameter("@opid", typeid)
                        };
                        _dbcontext.database.executesqlcommand(sqlrole, parmsrole);

                        //获取该角色的操作员
                        datatable opdt = untity.listtodatatable(gettoperatorsbyroleid(typeid));
                        if (opdt.rows.count > 0)
                        {
                            foreach (datarow rows in opdt.rows)
                            {
                                string strsqloperator = "delete from linemileage_privilege where operatorid=@optuser";
                                sqlparameter[] parmsoperator = new sqlparameter[]
                                {
                                    new sqlparameter("@optuser", rows["operatorid"])
                                };
                                _dbcontext.database.executesqlcommand(strsqloperator, parmsoperator);
                            }
                        }

                        foreach (var item in organizationprivileges)
                        {
                            //添加角色信息
                            item.roleid = typeid;
                            item.operatorid = "";
                            _dbcontext.set<linemileage_privilege>().add(item);
                            foreach (datarow rows in opdt.rows)
                            {
                                linemileage_privilege line = new linemileage_privilege()
                                {
                                    mileageid = item.mileageid,
                                    mileagename = item.mileagename,
                                    nodeid = item.nodeid,
                                    operatorid = rows["operatorid"].tostring(),
                                    roleid = typeid
                                  
                                };
                                _dbcontext.set<linemileage_privilege>().add(line);
                            }
                        }
                        _dbcontext.savechanges();
                        break;
                }
             
                return true;
            }
            catch (dbentityvalidationexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            }
        }

        #endregion
#region 菜单管理

        public void inserttwholemenu(t_wholemenu menuentity)
        {

            try
            {
                _dbcontext.set<t_wholemenu>().add(menuentity);
                _dbcontext.savechanges();
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }


        }

        public bool updatetwholemenu(t_wholemenu menuentity)
        {
            try
            {

                var category = _dbcontext.t_wholemenu.firstordefault(o => o.nodeid == menuentity.nodeid);
                if (category != null)
                {
                    category.nodeid = menuentity.nodeid;
                    category.nodename = menuentity.nodename;
                    category.parentnode = menuentity.parentnode;
                    category.isendnode = menuentity.isendnode;
                    category.pluginid = menuentity.pluginid;
                    category.commentary = menuentity.commentary;
                    category.disporder = menuentity.disporder;
                    category.type = menuentity.type;
                    category.groupbyname = menuentity.groupbyname;
                    category.imageico = menuentity.imageico;
                    category.typeshow = menuentity.typeshow;
                    category.isstartup = menuentity.isstartup;
                }
                _dbcontext.savechanges();

            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
            return true;
        }

        public list<t_wholemenu> getallwholemenulist()
        {
            try
            {
                var query = from fx in _dbcontext.t_wholemenu select fx;
                return query.tolist();
            }
            catch (entityexception ex)
            {
                loghelper.error("getallwholemenulist",ex);
                throw ex.innerexception;
            }
           

        }

        public int gettwholemenunodeid()
        {
            try
            {
                var category = _dbcontext.t_wholemenu.where(o => o.nodeid.length == 2).max(o => o.nodeid);
                return convert.toint32(category);
            }
            catch (entityexception ex)
            {
                loghelper.error("gettwholemenunodeid", ex);
                throw ex.innerexception;
            }
           

        }

        public int gettwholemenunodechildrenid()
        {
            try
            {
                var category = _dbcontext.t_wholemenu.where(o => o.nodeid.length > 3).max(o => o.nodeid);
                return convert.toint32(category);
            }
            catch (entityexception ex)
            {
                loghelper.error("gettwholemenunodechildrenid", ex);
                throw ex.innerexception;
            }
           

        }

        public int getmaxwholemenuid(string parentnode)
        {
            try
            {
                var category = _dbcontext.t_wholemenu.where
                             (o => o.parentnode == parentnode).max(o => o.nodeid);
                return convert.toint32(category);
            }
            catch (entityexception ex)
            {
                loghelper.error("getmaxwholemenuid", ex);
                throw ex.innerexception;
            }
         

        }

        //多级菜单删除
        public void deletewholemenu(string parentid)
        {
            try
            {
                var catetory = _dbcontext.t_wholemenu.where(o => o.parentnode == parentid);
                if (catetory.any())
                {
                    foreach (var item in catetory)
                    {
                        t_wholemenu itemtwhole = item;
                        var queryreslut = _dbcontext.t_wholemenu.where(o => o.parentnode == itemtwhole.nodeid);//查询该菜单下面是否有子菜单
                        if (queryreslut.any())
                        {
                            foreach (var wholemenu in queryreslut)
                            {
                                t_wholemenu menu = wholemenu;
                                var queryrm = _dbcontext.t_wholemenu.where(o => o.parentnode == menu.nodeid);
                                if (queryrm.any())
                                {
                                    foreach (var itemmenu in queryrm)
                                    {
                                        _dbcontext.t_wholemenu.remove(itemmenu);
                                    }
                                }
                                _dbcontext.t_wholemenu.remove(wholemenu);
                            }
                        }
                        _dbcontext.t_wholemenu.remove(item);

                    }
                    _dbcontext.savechanges();
                }
            }
            catch (invalidoperationexception e)
            {
                console.writeline(e);
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

        }

        public void deletewholemenunode(string nodeid)
        {

            try
            {
                var catetory = _dbcontext.t_wholemenu.where(o => o.nodeid == nodeid);
                if (catetory.any())
                {
                    foreach (var item in catetory)
                    {
                        _dbcontext.set<t_wholemenu>().attach(item);
                        _dbcontext.set<t_wholemenu>().remove(item);
                    }
                    _dbcontext.savechanges();
                }
            }
            catch (invalidoperationexception e)
            {
                console.writeline(e);
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

        }

        /// <summary>
        /// 保存用户权限
        /// </summary>
        /// <param name="dt">datatable 数据源</param>
        /// <param name="type">类型</param>
        /// <param name="typeid">roleid或operatorid</param>
        /// <returns></returns>
        public bool adduserright(datatable dt, string type, string typeid)
        {
            try
            {
                switch (type)
                {
                    #region role

                    case "role":
                        //删除该角色所有的权限
                        deleteroleprivilegebyroleid(typeid);
                        _dbcontext.sys_button_privilege.removerange(_dbcontext.sys_button_privilege.where(o => o.roleid == typeid));
                        _dbcontext.savechanges();
                        //获取该角色的操作员
                        datatable opdt = untity.listtodatatable(gettoperatorsbyroleid(typeid));
                        if (opdt.rows.count > 0)
                        {
                            foreach (datarow row in opdt.rows)
                            {
                                //删除该角色对应操作员权限信息
                                deleteoperatorprivilegeinfobyoperatorid(row["operatorid"].tostring());
                                removesysbuttonsprivilege(row);
                            }
                        }

                        foreach (datarow rolerow in dt.select(" isendnode='menu'"))
                        {
                            if (rolerow.rowstate == datarowstate.deleted)
                                continue;
                            //创建对象

                            var roledata = new t_role_privilege
                            {
                                barcaption = rolerow["nodename"].tostring(),
                                barorder = 0,
                                isendnode = rolerow["isendnode"].tostring(),
                                nodeid = rolerow["nodeid"].tostring(),
                                parentnode = rolerow["parentnode"].tostring(),
                                privid = rolerow["nodeid"].tostring(),
                                roleid = typeid,
                                istoolbar = 0
                            };
                            //插入新的角色权限信息
                            // roleprivilege.inserttroleprivilege(roledata);
                            inserttroleprivilege(roledata);

                            foreach (datarow oprow in opdt.rows)
                            {

                                var operdata = new t_operator_privilege
                                {
                                    barcaption = rolerow["nodename"].tostring(),
                                    barorder = 0,
                                    isendnode = rolerow["isendnode"].tostring(),
                                    nodeid = rolerow["nodeid"].tostring(),
                                    parentnode = rolerow["parentnode"].tostring(),
                                    privid = rolerow["nodeid"].tostring(),
                                    operatorid = oprow["operatorid"].tostring(),
                                    istoolbar = 0
                                };
                                //插入新的该角色操作员权限信息
                                insertoperatorprivilegeinfo(operdata);
                            }

                        }

                        foreach (datarow rows in dt.select(" isendnode='button'"))
                        {
                            if (rows.rowstate == datarowstate.deleted)
                                continue;

                            //newrow["nodeid"] = rowbutton.keyid;
                            //newrow["parentnode"] = rowbutton.menuid;
                            //newrow["nodename"] = rowbutton.buttoncaption;
                            //newrow["isendnode"] = "button";
                            //newrow["disporder"] = rowbutton.buttonid;
                            var opdata = new sys_button_privilege();
                            if (rows["disporder"] != null)
                            {
                                opdata.buttonid = convert.toint32(rows["disporder"]);
                            }

                            opdata.roleid = typeid;
                            string nodeid = rows["nodeid"].tostring();
                            if (nodeid.length == 1)
                            {
                                nodeid = nodeid.padleft(2, '0');
                            }
                            opdata.nodeid = nodeid;
                            _dbcontext.set<sys_button_privilege>().add(opdata);

                            foreach (datarow oprow in opdt.rows)
                            {

                                var opdata2 = new sys_button_privilege();
                                if (rows["disporder"] != null)
                                {
                                    opdata2.buttonid = convert.toint32(rows["disporder"]);
                                }
                                opdata2.roleid = typeid;
                                opdata2.operatorid = oprow["operatorid"].tostring();
                                opdata2.nodeid = nodeid;
                                _dbcontext.set<sys_button_privilege>().add(opdata2);

                            }

                        }
                        _dbcontext.savechanges();
                        break;

                    #endregion

                    #region operator

                    case "operator":
                        //删除该操作员权限信息
                        try
                        {
                            deleteoperatorprivilegeinfobyoperatorid(typeid);
                            _dbcontext.sys_button_privilege.removerange(
                                _dbcontext.sys_button_privilege.where(o => o.operatorid == typeid));
                            _dbcontext.savechanges();
                        }
                        catch (exception)
                        {
                            return false;
                        }
                        foreach (datarow rows in dt.select(" isendnode='menu'"))
                        {
                            if (rows.rowstate == datarowstate.deleted)
                                continue;
                            var opdata = new t_operator_privilege
                            {
                                barcaption = rows["nodename"].tostring(),
                                barorder = 0,
                                isendnode = rows["isendnode"].tostring(),
                                istoolbar = 0,
                                nodeid = rows["nodeid"].tostring(),
                                parentnode = rows["parentnode"].tostring(),
                                privid = rows["nodeid"].tostring(),
                                operatorid = typeid
                            };
                            //插入该操作员权限信息
                            insertoperatorprivilegeinfo(opdata);
                        }

                        foreach (datarow rows in dt.select(" isendnode='button'"))
                        {
                            if (rows.rowstate == datarowstate.deleted)
                                continue;

                            //newrow["nodeid"] = rowbutton.keyid;
                            //newrow["parentnode"] = rowbutton.menuid;
                            //newrow["nodename"] = rowbutton.buttoncaption;
                            //newrow["isendnode"] = "button";
                            //newrow["disporder"] = rowbutton.buttonid;
                            var opdata = new sys_button_privilege();
                            if (rows["disporder"] != null)
                            {
                                opdata.buttonid = convert.toint32(rows["disporder"]);
                            }
                            opdata.operatorid = typeid;
                            string nodeid = rows["nodeid"].tostring();
                            if (nodeid.length == 1)
                            {
                                nodeid = nodeid.padleft(2, '0');
                            }
                            opdata.nodeid = nodeid;
                            _dbcontext.set<sys_button_privilege>().add(opdata);
                        }
                        _dbcontext.savechanges();
                        break;

                    #endregion

                }
            }
            catch (entitysqlexception)
            {
                return false;
            }
            catch (invalidoperationexception)
            {
                return false;
            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
            return true;

        }

        private void removesysbuttonsprivilege(datarow row)
        {
            try
            {
                string operatorid = row["operatorid"].tostring();
                var query = _dbcontext.sys_button_privilege.where(o => o.operatorid == operatorid);
                if (query.any())
                {
                    _dbcontext.sys_button_privilege.removerange(query);
                    _dbcontext.savechanges();
                }
            }
            catch (entityexception ex)
            {
                loghelper.error("removesysbuttonsprivilege", ex);
                throw ex.innerexception;
            }
          
        }

        #endregion
#region 系统字典

        public bool insertdectionary(t_dictionaryinfo tinfo)
        {
            try
            {
                if (!_dbcontext.set<t_dictionaryinfo>().any(o => o.f_dictonarycode == tinfo.f_dictonarycode))
                {
                    _dbcontext.set<t_dictionaryinfo>().add(tinfo);
                    _dbcontext.savechanges();
                    return true;
                }
            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
            return false;
        }

        public bool updatedectionary(t_dictionaryinfo tinfo)
        {
            try
            {

                var catetory = _dbcontext.t_dictionaryinfo.first(o => o.f_dictonarycode == tinfo.f_dictonarycode);
                catetory.f_dictonarycode = tinfo.f_dictonarycode;
                catetory.f_dictonarycoding = tinfo.f_dictonarycoding;
                catetory.f_dictonaryname = tinfo.f_dictonaryname;
                catetory.f_dictonarytype = tinfo.f_dictonarytype;
                catetory.f_parentdictonarycode = tinfo.f_parentdictonarycode;
                catetory.f_remark = tinfo.f_remark;
                _dbcontext.savechanges();

            }
            catch (updateexception exception)
            {

                throw exception.innerexception;
            }
            catch (entityexception exception)
            {
                throw exception.innerexception;
            }
            catch (exception exception)
            {

                throw exception.innerexception;
            }
            return true;
        }

        public list<t_dictionaryinfo> getalldictonarylist()
        {
            try
            {

                list<t_dictionaryinfo> list = (from dictionaryinfo in _dbcontext.t_dictionaryinfo select dictionaryinfo).tolist();
                return list;

            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public list<t_dictionaryinfo> searchdictionaryoftype(string fdictonarycode)
        {
            var list = new list<t_dictionaryinfo>();
            try
            {
                if (!string.isnullorempty(fdictonarycode))
                {

                    list = (from dictionaryinfo in _dbcontext.t_dictionaryinfo where dictionaryinfo.f_parentdictonarycode == fdictonarycode select dictionaryinfo).tolist();
                    return list;

                }

            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
            return list;
        }

        public list<t_dictionaryinfo> searchdictionaryoftypecode(string typecode)
        {
            list<t_dictionaryinfo>  list=new list<t_dictionaryinfo>();
            try
            {
                if (!string.isnullorempty(typecode))
                {
                  t_dictionaryinfo  tdictionaryinfo= _dbcontext.t_dictionaryinfo.firstordefault(o=>o.f_dictonarytype==typecode);
                    if (tdictionaryinfo != null)
                    {
                        list = searchdictionaryoftype(tdictionaryinfo.f_dictonarycode);
                    }
                }
            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
            return list;
        }
        public int getmaxdictionaryparentcode()
        {
            try
            {

                var category = _dbcontext.t_dictionaryinfo.where(o => o.f_dictonarycode.length == 2).max(o => o.f_dictonarycode);
                return convert.toint32(category);

            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public int getdictionarynodechildrencode()
        {
            try
            {

                var category = _dbcontext.t_dictionaryinfo.where(o => o.f_dictonarycode.length > 3).max(o => o.f_dictonarycode);
                return convert.toint32(category);

            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public int getmaxdictionarycode(string parentcode)
        {
            try
            {

                var category = _dbcontext.t_dictionaryinfo.where
                    (o => o.f_parentdictonarycode == parentcode).max(o => o.f_dictonarycode);
                return convert.toint32(category);

            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public bool deletedictionarychildrencode(string dictonarycode)
        {
            try
            {


                var catetory = _dbcontext.t_dictionaryinfo.where(o => o.f_dictonarycode == dictonarycode);
                if (catetory.any())
                {
                    foreach (var item in catetory)
                    {
                        _dbcontext.set<t_dictionaryinfo>().attach(item);
                        _dbcontext.set<t_dictionaryinfo>().remove(item);

                    }
                    _dbcontext.savechanges();
                }


            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

            return true;
        }

        public bool deletedictonarycode(string parnentdictonarycode)
        {
            try
            {

                var catetory = _dbcontext.t_dictionaryinfo.where(o => o.f_parentdictonarycode == parnentdictonarycode);
                if (catetory.any())
                {
                    foreach (var item in catetory)
                    {
                        _dbcontext.set<t_dictionaryinfo>().attach(item);
                        _dbcontext.set<t_dictionaryinfo>().remove(item);
                    }
                    _dbcontext.savechanges();
                }

            }
            catch (updateexception)
            {
                return false;
            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {

                return false;
            }
            return true;
        }

        public datatable getalltablenamebydb(string databasename)
        {
            try
            {


                var retval = new datatable();
                var sqlconn = (sqlconnection)_dbcontext.database.connection;
                var cmdreport = new sqlcommand(string.format("select name from {0}..sysobjects where xtype='u' order by name", databasename), sqlconn);
                var dareport = new sqldataadapter(cmdreport);
                using (cmdreport)
                {
                    dareport.fill(retval);
                }
                retval.tablename = "systemtablename";
                return retval;

            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }

        }

        public int getdictionarycountbyparentcode(string parentcode)
        {
            try
            {

                var category = _dbcontext.t_dictionaryinfo.count(o => o.f_parentdictonarycode == parentcode);
                return convert.toint32(category);

            }
            catch (updateexception e)
            {
                throw e.innerexception;
            }
            catch (exception ee)
            {
                throw ee.innerexception;
            }
        }

        public t_dictionaryinfo gettdictonaryinfo(string dictonarycode)
        {

            var query = (from fx in _dbcontext.t_dictionaryinfo where fx.f_dictonarycode.equals(dictonarycode) select fx).firstordefault();
            return query;


        }

        #endregion
 #region 机构
        ///<summary>
        ///新增操作t_organization 
        /// </summary>
        public bool insertt_organization(t_organization model,string operatorid)
        {
            try
            {
                _dbcontext.set<t_organization>().add(model);
               
                //插入权限
                _dbcontext.set<t_organization_privilege>().add(new t_organization_privilege()
                {
                    f_operatorid =operatorid,
                    f_orgid = model.f_orgid,
                    f_orgname = model.f_orgname,
                    f_parentid = model.f_parentid
                });
                if (operatorid != "10000")
                {
                    //插入超级管理员的权限
                    _dbcontext.set<t_organization_privilege>().add(new t_organization_privilege()
                    {
                        f_operatorid = "10000",
                        f_orgid = model.f_orgid,
                        f_orgname = model.f_orgname,
                        f_parentid = model.f_parentid
                    });  
                }

            
                _dbcontext.savechanges();

            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
            return true;
        }

        ///<summary>
        ///修改操作t_organization 
        /// </summary>
        public bool updatet_organization(t_organization model)
        {
            try
            {

                var category = _dbcontext.t_organization.firstordefault(o => o.f_orgid == model.f_orgid);
                if (category != null)
                {
                    category.f_orgid = model.f_orgid;
                    category.f_orgname = model.f_orgname;
                    category.f_orgmanager = model.f_orgmanager;
                    category.f_builddate = model.f_builddate;
                    category.f_buildman = model.f_buildman;
                    category.f_tellphonenum = model.f_tellphonenum;
                    category.f_address = model.f_address;
                    category.f_parentid = model.f_parentid;
                    category.f_state = model.f_state;
                }

                //  _enity.entry(.state = entitystate.modified;
                _dbcontext.entry(category).state = entitystate.modified;
                //修改权限表
                var privialeages = _dbcontext.t_organization_privilege.where(o => o.f_orgid == model.f_orgid);
                if (privialeages.any())
                {
                    foreach (t_organization_privilege privialeage in privialeages)
                    {
                        privialeage.f_orgname = model.f_orgname;
                    }
                }
                _dbcontext.savechanges();

            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
            return true;
        }

        ///<summary>
        ///删除操作t_organization 
        /// </summary>
        public bool deletet_organization(string modelcode)
        {
            try
            {

                var category = _dbcontext.t_organization.where(o => o.f_orgid == modelcode);
                if (category.any())
                {
                    foreach (t_organization item in category)
                    {
                        _dbcontext.set<t_organization>().attach(item);
                        _dbcontext.set<t_organization>().remove(item);
                    }
                    _dbcontext.savechanges();
                }
                //删除权限表里面的信息
                var privleages = _dbcontext.t_organization_privilege.where(o => o.f_orgid == modelcode);
                if (privleages.any())
                {
                    foreach (t_organization_privilege organization in privleages)
                    {
                        _dbcontext.set<t_organization_privilege>().attach(organization);
                        _dbcontext.set<t_organization_privilege>().remove(organization);   
                    }

                    _dbcontext.savechanges();
                }

            }
            catch (entityexception)
            {
                return false;
            }
            catch (exception)
            {
                return false;
            }
            return true;
        }
        ///<summary>
        ///获取所有数据t_organization 
        /// </summary>
        public list<t_organization> gett_organizationlistdata()
        {
            try
            {

                return _dbcontext.t_organization.tolist();

            }
            catch (entityexception exception)
            {
                throw exception.innerexception;
            }
            catch (exception exception)
            {
                throw exception.innerexception;
            }
        }

        public iqueryable<t_organization> gett_organizationby(string operatorid)
        {
            try
            {
                var query = _dbcontext.t_organization.where(o => o.f_orgid == operatorid);
                return query;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        #endregion
 #region 机构数据权限

        /// <summary>
        ///根据sql语句查询返回iqueryablet_organization_privilege
        /// <param name="strsql">t_organization_privilegesql语句</param>
        /// </summary>
        public iqueryable<t_organization_privilege> gett_organization_privilegebysql(string strsql, params object[] obj)
        {
            try
            {
                iqueryable<t_organization_privilege> iqueryable = _dbcontext.database.sqlquery<t_organization_privilege>(strsql, obj).asqueryable();
                return iqueryable;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public list<t_organization_privilege> gett_organization_privilegebyid(string id)
        {
            try
            {
                return _dbcontext.set<t_organization_privilege>().where(o => o.f_operatorid == id).tolist();
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message);
                throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                loghelper.error(exception.message);
                throw exception.innerexception;
            }
        }

        public bool updatet_organization_privilege(list<t_organization_privilege> entity)
        {
            try
            {
                foreach (var operatororgprivilege in entity)
                {
                    new basedal<t_organization_privilege>(_dbcontext).modify(operatororgprivilege);
                }
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            }
        }
        public bool createt_organization_privilege(list<t_organization_privilege> entity, string operatorid)
        {
            try
            {
                string strsql = "delete from t_organization_privilege where f_operatorid=@opid";
                sqlparameter[] parms = new sqlparameter[]{
                   new sqlparameter("@opid",operatorid)
                };
                _dbcontext.database.executesqlcommand(strsql, parms);
                foreach (var operatororgprivilege in entity)
                {
                    _dbcontext.set<t_organization_privilege>().add(operatororgprivilege);
                }
                _dbcontext.savechanges();
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            }
        }

        public bool createt_organization_privilegeentity(t_organization_privilege entity)
        {
            try
            {
                _dbcontext.set<t_organization_privilege>().add(entity);
                _dbcontext.savechanges();
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            } 
        }

        public bool deletet_organization_privilege(list<int> id)
        {
            try
            {
                foreach (var i in id)
                {
                    new basedal<t_organization_privilege>(_dbcontext).delby(o => o.f_keyid == i);
                }
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception exception)
            {
                throw exception.innerexception;
            }
        }

        /// <summary>
        ///获取实体linemileage_privilege
        /// <param name="id">主键编号</param>
        /// </summary>
        public linemileage_privilege getlinemileage_privilegebyid(string id)
        {
            try
            {
                return _dbcontext.linemileage_privilege.firstordefault(o => o.sysid == int.parse(id));
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;

            }
        }

        /// <summary>
        ///修改实体linemileage_privilege
        /// <param name="entity">linemileage_privilege实体</param>
        /// </summary>
        public bool updatelinemileage_privilege(linemileage_privilege entity)
        {
            try
            {
                var category = _dbcontext.linemileage_privilege.firstordefault(o => o.sysid == entity.sysid);
                if (category != null)
                {
                    category.sysid = entity.sysid;
                    category.nodeid = entity.nodeid;
                    category.operatorid = entity.operatorid;
                    category.mileageid = entity.mileageid;
                    _dbcontext.savechanges();
                }
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            return true;
        }

        /// <summary>
        ///新增实体linemileage_privilege
        /// <param name="entity">linemileage_privilege实体</param>
        /// </summary>
        public bool createlinemileage_privilege(list<linemileage_privilege> entity, string operatorid)
        {
            try
            {
                string strsql = "delete from linemileage_privilege where operatorid=@opid";
                sqlparameter[] parms = new sqlparameter[]{
                   new sqlparameter("@opid",operatorid)
                };
                _dbcontext.database.executesqlcommand(strsql, parms);
                foreach (var item in entity)
                {
                    _dbcontext.set<linemileage_privilege>().add(item);
                    _dbcontext.savechanges();
                }

                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        ///删除linemileage_privilege
        /// <param name="id">主键编号sysid</param>
        /// </summary>
        public bool deletelinemileage_privilege(string id)
        {
            try
            {
                var category = _dbcontext.linemileage_privilege.firstordefault(o => o.sysid == int.parse(id));
                if (category != null)
                {
                    _dbcontext.set<linemileage_privilege>().attach(category);
                    _dbcontext.set<linemileage_privilege>().remove(category);
                    _dbcontext.savechanges();
                }
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message);
                throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message);
                throw ex.innerexception;
            }

            return true;
        }

        public iqueryable<t_projectlimits> gett_projectlimitsbysql(string strsql, params object[] obj)
        {
            try
            {
                iqueryable<t_projectlimits> iqueryable =
                    _dbcontext.database.sqlquery<t_projectlimits>(strsql, obj).asqueryable();
                return iqueryable;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }

        }

        /// <summary>
        ///根据sql语句查询返回iqueryablelinemileage_privilege
        /// <param name="strsql">linemileage_privilegesql语句</param>
        /// </summary>
        public iqueryable<linemileage_privilege> getlinemileage_privilegebysql(string strsql, params cmdparameter[] obj)
        {
            try
            {
                dbparameter[] parameters = new dbparameter[obj.length];
                for (int i = 0; i < obj.length; i++)
                {
                    dbparameter sqlpram = new sqlparameter(obj[i].parametername, obj[i].value);
                    parameters[i] = sqlpram;
                }
                iqueryable<linemileage_privilege> iqueryable = _dbcontext.database.sqlquery<linemileage_privilege>(strsql, parameters).asqueryable();
                return iqueryable;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public bool createt_projectlimits_privilege(list<t_projectlimits> entity, string operatorid)
        {
            try
            {
                string strsql = "delete from t_projectlimits where f_operatorid=@opid";
                sqlparameter[] parms = new sqlparameter[]{
                   new sqlparameter("@opid",operatorid)
                };
                _dbcontext.database.executesqlcommand(strsql, parms);
                foreach (var item in entity)
                {
                    _dbcontext.set<t_projectlimits>().add(item);
                }
                _dbcontext.savechanges();
                return true;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public iqueryable<t_projectlimits> gett_projectlimitsbyoperator(string operatorid)
        {
            try
            {
               
                var query=_dbcontext.t_projectlimits.where(o => o.f_operatorid == operatorid);
                return query;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        #endregion bn
   #region 按钮服务

        /// <summary>
        ///获取实体sys_buttons
        /// <param name="id">主键编号</param>
        /// </summary>
        public sys_buttons getsys_buttonsbyid(int id)
        {
            try
            {
                return _dbcontext.sys_buttons.firstordefault(o => o.keyid == id);
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;

            }
        }

        /// <summary>
        ///修改实体sys_buttons
        /// <param name="entity">sys_buttons实体</param>
        /// </summary>
        public bool updatesys_buttons(sys_buttons entity)
        {
            try
            {
                var category = _dbcontext.sys_buttons.firstordefault(o => o.keyid == entity.keyid);
                if (category != null)
                {
                    category.keyid = entity.keyid;
                    category.buttoncaption = entity.buttoncaption;
                    category.sortnum = entity.sortnum;
                    category.iconcls = entity.iconcls;
                    category.iconurl = entity.iconurl;
                    category.buttontag = entity.buttontag;
                    category.remark = entity.remark;
                    category.buttonhtml = entity.buttonhtml;
                    category.buggongroup = entity.buggongroup;
                    category.state = entity.state;
                    category.tooltip = entity.tooltip;
                    _dbcontext.savechanges();
                }
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            return true;
        }

        /// <summary>
        ///新增实体sys_buttons
        /// <param name="entity">sys_buttons实体</param>
        /// </summary>
        public bool createsys_buttons(sys_buttons entity)
        {
            try
            {
                _dbcontext.set<sys_buttons>().add(entity);
                _dbcontext.savechanges();
                return true;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        ///删除sys_buttons
        /// <param name="id">主键编号keyid</param>
        /// </summary>
        public bool deletesys_buttons(int id)
        {
            try
            {
                var category = _dbcontext.sys_buttons.firstordefault(o => o.keyid == id);
                if (category != null)
                {
                    _dbcontext.set<sys_buttons>().attach(category);
                    _dbcontext.set<sys_buttons>().remove(category);
                    _dbcontext.savechanges();
                }
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }

            return true;
        }

        public iqueryable<sys_wholemenubuttons> getsys_wholemenubuttonsbysql(string sql, params cmdparameter[] obj)
        {
            try
            {
                dbparameter[] parameters = new dbparameter[obj.length];
                for (int i = 0; i < obj.length; i++)
                {
                    dbparameter sqlpram = new sqlparameter(obj[i].parametername, obj[i].value);
                    parameters[i] = sqlpram;
                }
                iqueryable<sys_wholemenubuttons> iqueryable = _dbcontext.database.sqlquery<sys_wholemenubuttons>(sql, parameters).asqueryable();
                return iqueryable;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        ///根据sql语句查询返回iqueryablesys_buttons
        /// <param name="sql">sys_buttonssql语句</param>
        /// </summary>
        public iqueryable<sys_buttons> getsys_buttonsbysql(string strsql, params cmdparameter[] obj)
        {
            try
            {
                dbparameter[] parameters = new dbparameter[obj.length];
                for (int i = 0; i < obj.length; i++)
                {
                    dbparameter sqlpram = new sqlparameter(obj[i].parametername, obj[i].value);
                    parameters[i] = sqlpram;
                }
                iqueryable<sys_buttons> iqueryable = _dbcontext.database.sqlquery<sys_buttons>(strsql, parameters).asqueryable();
                return iqueryable;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public list<twholemenubutton> gettwholemenubuttons(string menuid)
        {
            try
            {

                var query = (from fx in _dbcontext.sys_wholemenubuttons
                             join fb in _dbcontext.sys_buttons
                             on fx.buttonid equals fb.keyid
                             where fx.menuid == menuid
                             select new twholemenubutton
                             {
                                 keyid = fx.keyid,
                                 menuid = fx.menuid,
                                 sortnum = fx.sortnum,
                                 buttoncaption = fb.buttoncaption,
                                 iconcls = fb.iconcls
                             }).tolist();
                return query;
            }
            catch (formatexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public list<twholemenubutton> gettwholemenubuttonsalllist()
        {
            try
            {

                var queryresult = (from fx in _dbcontext.sys_buttons
                                   join dx in _dbcontext.sys_wholemenubuttons on fx.keyid equals dx.buttonid
                                   select new twholemenubutton()
                                   {
                                       keyid = dx.keyid,
                                       buttoncaption = fx.buttoncaption,
                                       buttonid = fx.keyid,
                                       iconcls = fx.iconcls,
                                       menuid = dx.menuid,
                                       sortnum = dx.sortnum
                                   }).tolist();
                return queryresult;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public list<twholemenubutton> getbuttonlimitsallist(string operatorid)
        {
            try
            {
                var queryresult = (from db in _dbcontext.sys_buttons
                                   join fx in _dbcontext.sys_button_privilege
                                       on db.keyid equals fx.buttonid
                                   where fx.operatorid == operatorid
                                   select new twholemenubutton()
                                   {
                                       keyid = db.keyid,
                                       buttonid = db.keyid,
                                       menuid = fx.nodeid,
                                       buttoncaption = db.buttoncaption,
                                       operatorid = operatorid
                                   }).tolist();
                return queryresult;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public list<twholemenubutton> getbuttonlimitstrolealllist(string roleid)
        {
            try
            {
                var queryresult = (from db in _dbcontext.sys_buttons
                                   join fx in _dbcontext.sys_button_privilege
                                       on db.keyid equals fx.buttonid
                                   where fx.roleid == roleid
                                    && fx.operatorid == null || fx.operatorid == ""
                                   select new twholemenubutton()
                                   {
                                       keyid = db.keyid,
                                       buttonid = db.keyid,
                                       menuid = fx.nodeid,
                                       buttoncaption = db.buttoncaption,
                                       roleid = roleid
                                   }).tolist();
                return queryresult;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        ///新增实体sys_wholemenubuttons
        /// <param name="entity">sys_wholemenubuttons实体</param>
        /// </summary>
        public bool createsys_wholemenubuttons(list<sys_wholemenubuttons> entity)
        {
            try
            {
                foreach (var item in entity)
                {
                    _dbcontext.set<sys_wholemenubuttons>().add(item);
                }
                _dbcontext.savechanges();
                return true;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        /// <summary>
        ///删除sys_wholemenubuttons
        /// <param name="nodeid">主键编号keyid</param>
        /// </summary>
        public bool deletesys_wholemenubuttons(string nodeid)
        {
            try
            {
                var category = _dbcontext.sys_wholemenubuttons.where(o => o.menuid == nodeid);
                if (category.any())
                {
                    foreach (var item in category)
                    {
                        _dbcontext.set<sys_wholemenubuttons>().attach(item);
                        _dbcontext.set<sys_wholemenubuttons>().remove(item);
                    }
                }
                _dbcontext.savechanges();
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }

            return true;
        }

        public iqueryable<projectslimits> getprojectslimitsesbyoperator(string operatorid)
        {
            try
            {
                var category = (from fx in _dbcontext.t_projectlimits
                    join db in _dbcontext.rbimproject
                        on fx.f_itemkey equals db.itemkey
                    where fx.f_operatorid == operatorid
                    select new projectslimits()
                    {
                         projectcode = db.projectcode,
                         itemkey = db.itemkey,
                         itemtext = fx.f_itemtext,
                         operatorid = operatorid,
                         projectlocation = db.projectlocation,
                         projectremark = db.projectremark,
                         projecturl = db.projecturl,
                         roleid = fx.f_roleid,
                         sortid = fx.f_sortid
                    }).asqueryable();

                return category;
            }
            catch (entityexception ex)
            {
                loghelper.error(ex.message);
               throw ex.innerexception;
            }
            catch (dbexception ex)
            {
               loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        public ienumerable<linemileagelimits> getlinemileagelimitsesbyoperator(string operatorid, string projectkey)
        {
            try
            {
                var category = (from fx in _dbcontext.linemileage_privilege
                    join db in _dbcontext.linemileages
                        on fx.mileageid equals db.mileageid.tostring()
                    where fx.nodeid == projectkey
                    && fx.operatorid==operatorid
                    select new linemileagelimits()
                    {
                        sysid = fx.sysid,
                        mileageid = fx.mileageid,
                        mileagename = fx.mileagename,
                        projectkey = fx.nodeid,
                        modelsizes = db.modelsizes,
                        modeltype = db.modeltype,
                        nodetype = db.nodetype,
                        operatorid = fx.operatorid,
                        parentmileageid = db.parentmileageid,
                        planpath = db.planpath,
                        sortid = db.sortid,
                        relationmodel = db.relationmodel,
                        soidmodelfile = db.soidmodelfile

                    }).asenumerable();
                return category;

            }
            catch (entityexception ex)
            {

                loghelper.error(ex.message); throw ex.innerexception;
            }
            catch (dbexception ex)
            {
                loghelper.error(ex.message); throw ex.innerexception;
            }
        }

        #endregion
  public void dispose()
        {
            var dispose = _dbcontext as idisposable;
            if (dispose != null)
            {
                _dbcontext.dispose();
            }
        }
    }

 4、wcf服务启动

  public void servicestart()
        {
            try
            {

                string serviceport = configurationmanager.appsettings["port"];// "8007";
                string serviceip = configurationmanager.appsettings["serviceip"];// "127.0.0.1";
                string serviceaddress = string.format("net.tcp://{0}:{1}", serviceip, serviceport);
                var sevtypes = new dictionary<type, type>
                    {
                        {typeof (ioperationpurviewservice), typeof (operationservice)}
                        
                    };

                foreach (var item in sevtypes)
                {
                    string tname = item.key.name.substring(1);
                    string endpointaddress = serviceaddress + tname;
                    if (!serviceaddress.endswith("/"))
                        endpointaddress = string.format("{0}/{1}", serviceaddress, tname);
                    var servicehost = new servicehost(item.value, new uri(endpointaddress));
                    //加载元数据结点
                    var smb = new servicemetadatabehavior();
                    servicehost.description.behaviors.add(smb);
                     // servicehost.description.behaviors.add(new servicedebugbehavior(){includeexceptiondetailinfaults = true});
                    servicehost.addserviceendpoint(typeof(imetadataexchange),
                                                   metadataexchangebindings.createmextcpbinding(), "mex");
                    //加载nettcpbinding结点
                    var nettcpbinding = new nettcpbinding
                    {
                        security = { mode = securitymode.none },
                        receivetimeout = timespan.parse("10:59:00"),
                        closetimeout = timespan.parse("10:59:00"),
                        opentimeout = timespan.parse("10:59:00"),
                        sendtimeout = timespan.parse("10:59:00"),
                        maxbufferpoolsize = long.maxvalue - 1,
                        maxbuffersize = int.maxvalue - 1,
                        maxreceivedmessagesize = int.maxvalue - 1,
                        //maxconnections = 1000,
                        readerquotas =
                        {
                            maxdepth = int.maxvalue - 1,
                            maxstringcontentlength = int.maxvalue - 1,
                            maxarraylength = int.maxvalue - 1,
                            maxbytesperread = int.maxvalue - 1,
                            maxnametablecharcount = int.maxvalue - 1
                        }
                        //  ,portsharingenabled = true //端口共享
                    };
                    servicehost.addserviceendpoint(item.key, nettcpbinding, endpointaddress);
                    string address = endpointaddress;
                    servicehost.opened += delegate
                    {
                        loadpluginnamespace.add(new serviceinfo() { address = address + "/mex", id = 0, state = "启动" });
                    };

                    servicehost.open();
                    servicehosts.add(servicehost);
                }
            }
            catch (configurationexception e)
            {
                console.writeline(e);
            }
            catch (exception ex)
            {
                throw ex;
            }
        }

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网