コード例 #1
0
        /// <summary>
        /// 改变菜单排序
        /// </summary>
        /// <param name="orders"></param>
        /// <param name="adminMenu"></param>
        /// <returns></returns>
        public bool UpdateMenuOrders(int orders, Sys_AdminMenu adminMenu)
        {
            //防止使排序需要为正整数
            if (orders <= 0)
            {
                orders = 1;
            }
            bool isNeedCommit = false;

            _repository.BeginTran();
            try
            {
                var maxOrder = _repository.GetMaxValue <Sys_AdminMenu>(p => p.Pid == adminMenu.Pid, p => p.Orders);
                if (adminMenu.Orders > maxOrder)
                {
                    adminMenu.Orders = maxOrder + 1;                                    //保证更新的排序不会大于(最大值+1)
                }
                if (adminMenu.Orders > orders)                                          //上移排序
                {
                    if (UpdateOrderByPlus(adminMenu.Pid, orders, adminMenu.Orders) > 0) //上移排序需要将排在自己前面的排序往下移1
                    {
                        isNeedCommit     = true;
                        adminMenu.Orders = orders;
                        if (!UpdateColumns(c => new { c.Orders }, adminMenu))
                        {
                            isNeedCommit = false;
                        }
                    }
                }
                else if (adminMenu.Orders < orders)                                    //下移排序
                {
                    if (UpdateOrderBySub(adminMenu.Pid, adminMenu.Orders, orders) > 0) //下移排序需要将排在自己后面的排序往上移1
                    {
                        isNeedCommit     = true;
                        adminMenu.Orders = orders;
                        if (!UpdateColumns(c => new { c.Orders }, adminMenu))
                        {
                            isNeedCommit = false;
                        }
                    }
                }

                if (isNeedCommit)
                {
                    _repository.CommitTran();
                }
                else
                {
                    _repository.RollBackTran();
                }
                return(isNeedCommit);
            }
            catch
            {
                _repository.RollBackTran();
                return(false);
            }
        }
コード例 #2
0
 public Sys_AdminMenuCreateOrUpdateCommand(Sys_AdminMenu ent)
 {
     this.ent = ent;
 }
コード例 #3
0
 public bool UpdateColumns(Expression <Func <Sys_AdminMenu, object> > columns, Sys_AdminMenu model, bool isLock = false)
 {
     return(_repository.UpdateColumns(columns, model, isLock) > 0);
 }
コード例 #4
0
 public bool Update(Sys_AdminMenu model)
 {
     throw new NotImplementedException();
 }
コード例 #5
0
 public int Insert(Sys_AdminMenu model)
 {
     return(_repository.Insert(model));
 }