1. 新增:微信小程序端新增微信手机号登录功能(必须为企业认证小程序) 2. 新增:加入动态更新常见问题 3. 新增:新增小程序分享功能 4. 新增:小程序新增第一次登录需要修改密码 5. 新增:新增接口权限控制 6. 新增:用户新增is_staff用来判断是否为工作人员 7. 新增:软删除新增is_delete字段来判断,delete_datetime当前主要来记录时间 8. 更新:部分接口删除功能已更新,需要试用软删除的才会试用软删除 9. 更新:更新系统配置缓存功能 10. 更新:接口认证依赖项更新 11. 更新:获取系统基础配置信息与用户协议与隐私协议更新 12. 优化:优化接口与数据库操作
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
# @version : 1.0
|
|
# @Creaet Time : 2022/3/21 11:03
|
|
# @File : cache.py
|
|
# @IDE : PyCharm
|
|
# @desc : 缓存
|
|
|
|
from typing import List
|
|
from core import logger
|
|
from core.database import db_getter
|
|
from apps.vadmin.system.crud import SettingsTabDal
|
|
import json
|
|
from aioredis.client import Redis
|
|
from core.exception import CustomException
|
|
from utils import status
|
|
|
|
|
|
class Cache:
|
|
|
|
DEFAULT_TAB_NAMES = ["wx_server", "aliyun_sms", "aliyun_oss"]
|
|
|
|
def __init__(self, rd: Redis):
|
|
self.rd = rd
|
|
|
|
async def cache_tab_names(self, tab_names: List[str] = None):
|
|
"""
|
|
缓存系统配置
|
|
如果手动修改了mysql数据库中的配置
|
|
那么需要在redis中将对应的tab_name删除
|
|
"""
|
|
async_session = db_getter()
|
|
session = await async_session.__anext__()
|
|
if tab_names:
|
|
datas = await SettingsTabDal(session).get_tab_name_values(tab_names, hidden=None)
|
|
else:
|
|
datas = await SettingsTabDal(session).get_tab_name_values(self.DEFAULT_TAB_NAMES, hidden=None)
|
|
for k, v in datas.items():
|
|
await self.rd.client().set(k, json.dumps(v))
|
|
|
|
async def get_tab_name(self, tab_name: str, retry: int = 3):
|
|
"""
|
|
获取系统配置
|
|
:params tab_name: 配置表标签名称
|
|
:params retry: 重试次数
|
|
"""
|
|
result = await self.rd.get(tab_name)
|
|
if not result and retry > 0:
|
|
logger.error(f"未从Redis中获取到{tab_name}配置信息,正在重新更新配置信息,重试次数:{retry}")
|
|
await self.cache_tab_names([tab_name])
|
|
await self.get_tab_name(tab_name, retry - 1)
|
|
elif not result and retry == 0:
|
|
raise CustomException(f"获取{tab_name}配置信息失败,请联系管理员!", code=status.HTTP_ERROR)
|
|
else:
|
|
return json.loads(result)
|