Skip to content

Commit d4bbbc0

Browse files
committed
finish
1 parent 068fb89 commit d4bbbc0

File tree

4 files changed

+30
-35
lines changed

4 files changed

+30
-35
lines changed

backend/app/admin/api/v1/sys/config.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
@router.get('/website', summary='获取网站配置信息', dependencies=[DependsJwtAuth])
2525
async def get_website_config() -> ResponseModel:
26-
config = await config_service.get_website()
26+
config = await config_service.get_built_in_config('website')
2727
return response_base.success(data=config)
2828

2929

@@ -35,14 +35,14 @@ async def get_website_config() -> ResponseModel:
3535
DependsRBAC,
3636
],
3737
)
38-
async def save_website_config(obj: SaveConfigParam) -> ResponseModel:
39-
await config_service.save_website(obj)
38+
async def save_website_config(objs: list[SaveConfigParam]) -> ResponseModel:
39+
await config_service.save_built_in_config(objs, 'website')
4040
return response_base.success()
4141

4242

4343
@router.get('/protocol', summary='获取用户协议', dependencies=[DependsJwtAuth])
4444
async def get_protocol_config() -> ResponseModel:
45-
config = await config_service.get_protocol()
45+
config = await config_service.get_built_in_config('protocol')
4646
return response_base.success(data=config)
4747

4848

@@ -54,14 +54,14 @@ async def get_protocol_config() -> ResponseModel:
5454
DependsRBAC,
5555
],
5656
)
57-
async def save_protocol_config(obj: SaveConfigParam) -> ResponseModel:
58-
await config_service.save_protocol(obj)
57+
async def save_protocol_config(objs: list[SaveConfigParam]) -> ResponseModel:
58+
await config_service.save_built_in_config(objs, 'protocol')
5959
return response_base.success()
6060

6161

6262
@router.get('/policy', summary='获取用户政策', dependencies=[DependsJwtAuth])
6363
async def get_policy_config() -> ResponseModel:
64-
config = await config_service.get_policy()
64+
config = await config_service.get_built_in_config('policy')
6565
return response_base.success(data=config)
6666

6767

@@ -73,8 +73,8 @@ async def get_policy_config() -> ResponseModel:
7373
DependsRBAC,
7474
],
7575
)
76-
async def save_policy_config(obj: SaveConfigParam) -> ResponseModel:
77-
await config_service.save_policy(obj)
76+
async def save_policy_config(objs: list[SaveConfigParam]) -> ResponseModel:
77+
await config_service.save_built_in_config(objs, 'policy')
7878
return response_base.success()
7979

8080

backend/app/admin/crud/crud_config.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ async def get_by_name(self, db: AsyncSession, name: str) -> Config | None:
4242
"""
4343
return await self.select_model_by_column(db, name=name, type__not_in=admin_settings.CONFIG_BUILT_IN_TYPES)
4444

45+
async def get_by_key(self, db: AsyncSession, key: str) -> Config | None:
46+
"""
47+
通过 key 获取系统配置参数
48+
49+
:param db:
50+
:param key:
51+
:return:
52+
"""
53+
return await self.select_model_by_column(db, key=key, type__not_in=admin_settings.CONFIG_BUILT_IN_TYPES)
54+
4555
async def get_list(self, name: str = None, type: str = None) -> Select:
4656
"""
4757
获取系统参数配置列表

backend/app/admin/model/sys_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Config(Base):
1313
__tablename__ = 'sys_config'
1414

1515
id: Mapped[id_key] = mapped_column(init=False)
16-
name: Mapped[str] = mapped_column(String(20), comment='名称')
16+
name: Mapped[str] = mapped_column(String(20), unique=True, comment='名称')
1717
type: Mapped[str | None] = mapped_column(String(20), server_default=None, comment='类型')
1818
key: Mapped[str] = mapped_column(String(50), unique=True, comment='键名')
1919
value: Mapped[str] = mapped_column(LONGTEXT, comment='键值')

backend/app/admin/service/config_service.py

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,19 @@
1818

1919
class ConfigService:
2020
@staticmethod
21-
async def get_website() -> Sequence[Config]:
21+
async def get_built_in_config(type: str) -> Sequence[Config]:
2222
async with async_db_session() as db:
23-
return await config_dao.get_by_type(db, 'website')
23+
return await config_dao.get_by_type(db, type)
2424

2525
@staticmethod
26-
async def save_website(obj: SaveConfigParam):
26+
async def save_built_in_config(objs: list[SaveConfigParam], type: str) -> None:
2727
async with async_db_session.begin() as db:
28-
config = await config_dao.get_by_name(db, obj.name)
29-
if config is None:
30-
await config_dao.create_models()
31-
32-
@staticmethod
33-
async def get_protocol() -> Sequence[Config]:
34-
async with async_db_session() as db:
35-
return await config_dao.get_by_type(db, 'protocol')
36-
37-
@staticmethod
38-
async def save_protocol(obj: SaveConfigParam):
39-
pass
40-
41-
@staticmethod
42-
async def get_policy() -> Sequence[Config]:
43-
async with async_db_session() as db:
44-
return await config_dao.get_by_type(db, 'policy')
45-
46-
@staticmethod
47-
async def save_policy(obj: SaveConfigParam):
48-
pass
28+
for obj in objs:
29+
config = await config_dao.get_by_name(db, obj.name)
30+
if config is None:
31+
await config_dao.create_model(db, obj, type=type)
32+
else:
33+
await config_dao.update_model(db, config.id, obj, type=type)
4934

5035
@staticmethod
5136
async def get(pk) -> Config | dict:
@@ -62,7 +47,7 @@ async def get_select(*, name: str = None, type: str = None) -> Select:
6247
@staticmethod
6348
async def create(*, obj: CreateAnyConfigParam) -> None:
6449
async with async_db_session.begin() as db:
65-
config = await config_dao.get_by_name(db, obj.name)
50+
config = await config_dao.get_by_name(db, obj.name) or config_dao.get_by_key(db, obj.key)
6651
if config:
6752
raise errors.ForbiddenError(msg='参数配置已存在')
6853
if obj.type in admin_settings.CONFIG_BUILT_IN_TYPES:

0 commit comments

Comments
 (0)