Exemple #1
0
        public int Insert(AreaInfo areaInfo)
        {
            using (var conn = GetConnection())
            {
                conn.Open();
                using (var trans = conn.BeginTransaction())
                {
                    try
                    {
                        var parentAreaInfo = GetAreaInfo(areaInfo.ParentId);

                        InsertWithTrans(parentAreaInfo, areaInfo, trans);

                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                }
            }

            AreaManager.ClearCache();

            return(areaInfo.Id);
        }
Exemple #2
0
        private void SetTaxisSubtract(int areaId, string parentsPath, int subtractNum)
        {
            var    path      = PageUtils.FilterSql(parentsPath);
            string sqlString =
                $"UPDATE siteserver_Area SET Taxis = Taxis - {subtractNum} WHERE  Id = {areaId} OR ParentsPath = '{path}' OR ParentsPath LIKE '{path},%'";

            ExecuteNonQuery(sqlString);

            AreaManager.ClearCache();
        }
Exemple #3
0
        private void UpdateSubtractChildrenCount(string parentsPath, int subtractNum)
        {
            if (!string.IsNullOrEmpty(parentsPath))
            {
                var sqlString = string.Concat("UPDATE siteserver_Area SET ChildrenCount = ChildrenCount - ", subtractNum, " WHERE Id IN (", PageUtils.FilterSql(parentsPath), ")");
                ExecuteNonQuery(sqlString);

                AreaManager.ClearCache();
            }
        }
Exemple #4
0
        private void SetTaxisAdd(int areaId, string parentsPath, int addNum)
        {
            var    path      = PageUtils.FilterSql(parentsPath);
            string sqlString =
                $"UPDATE bairong_Area SET Taxis = Taxis + {addNum} WHERE AreaID = {areaId} OR ParentsPath = '{path}' OR ParentsPath LIKE '{path},%'";

            ExecuteNonQuery(sqlString);

            AreaManager.ClearCache();
        }
Exemple #5
0
        public void UpdateCountOfAdmin()
        {
            var areaIdList = AreaManager.GetAreaIdList();

            foreach (var areaId in areaIdList)
            {
                var    count     = DataProvider.AdministratorDao.GetCountByAreaId(areaId);
                string sqlString = $"UPDATE {TableName} SET CountOfAdmin = {count} WHERE Id = {areaId}";
                ExecuteNonQuery(sqlString);
            }
            AreaManager.ClearCache();
        }
Exemple #6
0
        public void UpdateCountOfAdmin()
        {
            var areaIdList = AreaManager.GetAreaIdList();

            foreach (var areaId in areaIdList)
            {
                string sqlString =
                    $"UPDATE bairong_Area SET CountOfAdmin = (SELECT COUNT(*) AS CountOfAdmin FROM bairong_Administrator WHERE AreaID = {areaId}) WHERE AreaID = {areaId}";
                ExecuteNonQuery(sqlString);
            }
            AreaManager.ClearCache();
        }
Exemple #7
0
        public void Delete(int areaId)
        {
            var areaInfo = GetAreaInfo(areaId);

            if (areaInfo != null)
            {
                var areaIdList = new List <int>();
                if (areaInfo.ChildrenCount > 0)
                {
                    areaIdList = GetIdListForDescendant(areaId);
                }
                areaIdList.Add(areaId);

                string sqlString =
                    $"DELETE FROM siteserver_Area WHERE Id IN ({TranslateUtils.ToSqlInStringWithoutQuote(areaIdList)})";

                int deletedNum;

                using (var conn = GetConnection())
                {
                    conn.Open();
                    using (var trans = conn.BeginTransaction())
                    {
                        try
                        {
                            deletedNum = ExecuteNonQuery(trans, sqlString);

                            if (deletedNum > 0)
                            {
                                string sqlStringTaxis =
                                    $"UPDATE siteserver_Area SET Taxis = Taxis - {deletedNum} WHERE (Taxis > {areaInfo.Taxis})";
                                ExecuteNonQuery(trans, sqlStringTaxis);
                            }

                            trans.Commit();
                        }
                        catch
                        {
                            trans.Rollback();
                            throw;
                        }
                    }
                }
                UpdateIsLastNode(areaInfo.ParentId);
                UpdateSubtractChildrenCount(areaInfo.ParentsPath, deletedNum);
            }

            AreaManager.ClearCache();
        }
Exemple #8
0
        public void Update(AreaInfo areaInfo)
        {
            IDataParameter[] updateParms =
            {
                GetParameter(ParmName,          DataType.VarChar,                     255, areaInfo.AreaName),
                GetParameter(ParmParentsPath,   DataType.VarChar,                     255, areaInfo.ParentsPath),
                GetParameter(ParmParentsCount,  DataType.Integer, areaInfo.ParentsCount),
                GetParameter(ParmChildrenCount, DataType.Integer, areaInfo.ChildrenCount),
                GetParameter(ParmIsLastNode,    DataType.VarChar,                      18, areaInfo.IsLastNode.ToString()),
                GetParameter(ParmCountOfAdmin,  DataType.Integer, areaInfo.CountOfAdmin),
                GetParameter(ParmId,            DataType.Integer, areaInfo.Id)
            };

            ExecuteNonQuery(SqlUpdate, updateParms);

            AreaManager.ClearCache();
        }
Exemple #9
0
        private void InsertWithTrans(AreaInfo parentInfo, AreaInfo areaInfo, IDbTransaction trans)
        {
            if (parentInfo != null)
            {
                areaInfo.ParentsPath  = parentInfo.ParentsPath + "," + parentInfo.Id;
                areaInfo.ParentsCount = parentInfo.ParentsCount + 1;

                var maxTaxis = GetMaxTaxisByParentPath(areaInfo.ParentsPath);
                if (maxTaxis == 0)
                {
                    maxTaxis = parentInfo.Taxis;
                }
                areaInfo.Taxis = maxTaxis + 1;
            }
            else
            {
                areaInfo.ParentsPath  = "0";
                areaInfo.ParentsCount = 0;
                var maxTaxis = GetMaxTaxisByParentPath("0");
                areaInfo.Taxis = maxTaxis + 1;
            }

            var sqlInsert = "INSERT INTO siteserver_Area (AreaName, ParentID, ParentsPath, ParentsCount, ChildrenCount, IsLastNode, Taxis, CountOfAdmin) VALUES (@AreaName, @ParentID, @ParentsPath, @ParentsCount, @ChildrenCount, @IsLastNode, @Taxis, @CountOfAdmin)";

            IDataParameter[] insertParms =
            {
                GetParameter(ParmName,          DataType.VarChar,                    255, areaInfo.AreaName),
                GetParameter(ParmParentId,      DataType.Integer, areaInfo.ParentId),
                GetParameter(ParmParentsPath,   DataType.VarChar,                    255, areaInfo.ParentsPath),
                GetParameter(ParmParentsCount,  DataType.Integer, areaInfo.ParentsCount),
                GetParameter(ParmChildrenCount, DataType.Integer,                     0),
                GetParameter(ParmIsLastNode,    DataType.VarChar,                     18, true.ToString()),
                GetParameter(ParmTaxis,         DataType.Integer, areaInfo.Taxis),
                GetParameter(ParmCountOfAdmin,  DataType.Integer, areaInfo.CountOfAdmin)
            };

            string sqlString = $"UPDATE siteserver_Area SET {SqlUtils.ToPlusSqlString("Taxis")} WHERE (Taxis >= {areaInfo.Taxis})";

            ExecuteNonQuery(trans, sqlString);

            areaInfo.Id = ExecuteNonQueryAndReturnId(TableName, nameof(AreaInfo.Id), trans, sqlInsert, insertParms);

            if (!string.IsNullOrEmpty(areaInfo.ParentsPath) && areaInfo.ParentsPath != "0")
            {
                sqlString = $"UPDATE siteserver_Area SET {SqlUtils.ToPlusSqlString("ChildrenCount")} WHERE Id IN ({PageUtils.FilterSql(areaInfo.ParentsPath)})";

                ExecuteNonQuery(trans, sqlString);
            }

            sqlString = $"UPDATE siteserver_Area SET IsLastNode = '{false}' WHERE ParentID = {areaInfo.ParentId}";

            ExecuteNonQuery(trans, sqlString);

            //sqlString =
            //    $"UPDATE siteserver_Area SET IsLastNode = 'True' WHERE (Id IN (SELECT TOP 1 Id FROM siteserver_Area WHERE ParentID = {areaInfo.ParentId} ORDER BY Taxis DESC))";
            sqlString =
                $"UPDATE siteserver_Area SET IsLastNode = '{true}' WHERE Id IN ({SqlUtils.ToInTopSqlString(TableName, "Id", $"WHERE ParentID = {areaInfo.ParentId}", "ORDER BY Taxis DESC", 1)})";

            ExecuteNonQuery(trans, sqlString);

            AreaManager.ClearCache();
        }