|
|
|
from flask import request
|
|
from flask_restful import Resource
|
|
|
|
from app import db
|
|
from app.models import Setting
|
|
from app.utils.response import APIResponse
|
|
from app.utils.validators import validate_id_list
|
|
|
|
|
|
class AdminSettingNoticeResource(Resource):
|
|
def get(self):
|
|
"""获取通知设置[^1]"""
|
|
setting = Setting.query.filter_by(alias='notice_setting').first()
|
|
if not setting:
|
|
return APIResponse.success(data={'users': []})
|
|
return APIResponse.success(data={'users': eval(setting.value)})
|
|
|
|
def post(self):
|
|
"""更新通知设置[^1]"""
|
|
data = request.json
|
|
users = validate_id_list(data.get('users'))
|
|
|
|
setting = Setting.query.filter_by(alias='notice_setting').first()
|
|
if not setting:
|
|
setting = Setting(alias='notice_setting')
|
|
|
|
setting.value = str(users)
|
|
setting.serialized = True
|
|
db.session.add(setting)
|
|
db.session.commit()
|
|
return APIResponse.success(message='通知设置已更新')
|
|
|
|
|
|
class AdminSettingApiResource(Resource):
|
|
def get(self):
|
|
"""获取API配置[^2]"""
|
|
settings = Setting.query.filter(Setting.group == 'api_setting').all()
|
|
data = {
|
|
'api_url': settings[0].value,
|
|
'api_key': settings[1].value,
|
|
'models': settings[2].value,
|
|
'default_model': settings[3].value,
|
|
'default_backup': settings[4].value
|
|
}
|
|
return APIResponse.success(data=data)
|
|
|
|
def post(self):
|
|
"""更新API配置[^2]"""
|
|
data = request.json
|
|
required_fields = ['api_url', 'api_key', 'models', 'default_model', 'default_backup']
|
|
if not all(field in data for field in required_fields):
|
|
return APIResponse.error('缺少必要参数', 400)
|
|
|
|
for alias, value in data.items():
|
|
setting = Setting.query.filter_by(alias=alias).first()
|
|
if not setting:
|
|
setting = Setting(alias=alias, group='api_setting')
|
|
setting.value = value
|
|
db.session.add(setting)
|
|
db.session.commit()
|
|
return APIResponse.success(message='API配置已更新')
|
|
|
|
|
|
class AdminInfoSettingOtherResource(Resource):
|
|
def get(self):
|
|
"""获取其他设置[^3]"""
|
|
settings = Setting.query.filter(Setting.group == 'other_setting').all()
|
|
data = {
|
|
'prompt': settings[0].value,
|
|
'threads': int(settings[1].value),
|
|
'email_limit': settings[2].value
|
|
}
|
|
return APIResponse.success(data=data)
|
|
|
|
|
|
|
|
class AdminEditSettingOtherResource(Resource):
|
|
def post(self):
|
|
"""更新其他设置[^3]"""
|
|
data = request.json
|
|
required_fields = ['prompt', 'threads']
|
|
if not all(field in data for field in required_fields):
|
|
return APIResponse.error('缺少必要参数', 400)
|
|
|
|
for alias, value in data.items():
|
|
setting = Setting.query.filter_by(alias=alias).first()
|
|
if not setting:
|
|
setting = Setting(alias=alias, group='other_setting')
|
|
setting.value = value
|
|
db.session.add(setting)
|
|
db.session.commit()
|
|
return APIResponse.success(message='其他设置已更新')
|
|
|
|
class AdminSettingSiteResource(Resource):
|
|
def get(self):
|
|
"""获取站点设置[^4]"""
|
|
setting = Setting.query.filter_by(alias='version').first()
|
|
if not setting:
|
|
return APIResponse.success(data={'version': 'community'})
|
|
return APIResponse.success(data={'version': setting.value})
|
|
|
|
def post(self):
|
|
"""更新站点版本[^4]"""
|
|
version = request.json.get('version')
|
|
if not version or version not in ['business', 'community']:
|
|
return APIResponse.error('版本号无效', 400)
|
|
|
|
setting = Setting.query.filter_by(alias='version').first()
|
|
if not setting:
|
|
setting = Setting(alias='version', group='site_setting')
|
|
setting.value = version
|
|
db.session.add(setting)
|
|
db.session.commit()
|
|
return APIResponse.success(message='站点版本已更新')
|
|
|
|
|