public async Task <Result> AddProvince(int countryId, [FromBody] ProvinceCreateParam model)
        {
            var anyCountry = _countryRepository.Query().Any(c => c.Id == countryId);

            if (!anyCountry)
            {
                throw new Exception("国家不存在");
            }
            var level = await GetLevelByParent(model.ParentId);

            var any = _provinceRepository.Query().Any(c => c.Name == model.Name && c.CountryId == countryId && c.ParentId == model.ParentId);

            if (any)
            {
                throw new Exception("单据已存在");
            }
            var province = new StateOrProvince()
            {
                CountryId    = countryId,
                ParentId     = model.ParentId,
                DisplayOrder = model.DisplayOrder,
                Name         = model.Name,
                IsPublished  = model.IsPublished,
                Level        = level,
                Code         = model.Code
            };

            _provinceRepository.Add(province);
            await _provinceRepository.SaveChangesAsync();

            await _countryService.ClearProvinceCache(countryId);

            return(Result.Ok());
        }
        public async Task <Result> EditProvince(int id, [FromBody] ProvinceCreateParam model)
        {
            var province = await _provinceRepository.FirstOrDefaultAsync(id);

            if (province == null)
            {
                throw new Exception("单据不存在");
            }
            var anyCountry = _countryRepository.Query().Any(c => c.Id == province.CountryId);

            if (!anyCountry)
            {
                throw new Exception("国家不存在");
            }

            var any = _provinceRepository.Query().Any(c => c.Name == model.Name && c.CountryId == province.CountryId && c.ParentId == model.ParentId && c.Id != id);

            if (any)
            {
                throw new Exception("单据已存在");
            }

            if (model.ParentId == province.Id)
            {
                throw new Exception("不能设置自身作为父级");
            }

            //高层级或低层级 升高或降低控制
            //如果当前单据存在子集,则不允许调整层级
            var level = await GetLevelByParent(model.ParentId);

            if (level != province.Level)
            {
                var anyChild = _provinceRepository.Query().Any(c => c.ParentId == province.Id);
                if (anyChild)
                {
                    throw new Exception("当前单据存在子级,不允许调整层级");
                }
            }

            //province.CountryId = model.CountryId;
            province.ParentId     = model.ParentId;
            province.DisplayOrder = model.DisplayOrder;
            province.Name         = model.Name;
            province.IsPublished  = model.IsPublished;
            province.Level        = level;
            province.Code         = model.Code;
            province.UpdatedOn    = DateTime.Now;
            await _provinceRepository.SaveChangesAsync();

            await _countryService.ClearProvinceCache(province.CountryId);

            return(Result.Ok());
        }