Commit f0090492 authored by xianyang's avatar xianyang

Merge branch 'develop/xp' into development

# Conflicts:
#	app/api/account/schemas.py
#	app/api/margin/views.py
parents ea0276fd 69fc622c
...@@ -65,3 +65,20 @@ class CreateType(BaseModel): ...@@ -65,3 +65,20 @@ class CreateType(BaseModel):
key_name: str key_name: str
key_value: str key_value: str
type: int type: int
class Recovery_fix(PublicModel):
uuid: Optional[str] = None
class RecoveryTable(BaseModel):
uuid: Optional[str] = None
type: Optional[int] = None
out_money: Optional[int] = None
entry_money: Optional[float] = None
from_time: Optional[str] = None
cont: Optional[str] = None
class RecoveryupdateTable(RecoveryTable):
id: int
\ No newline at end of file
...@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session ...@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session
from libs.functions import get_now_timestamp, get_now_datetime from libs.functions import get_now_timestamp, get_now_datetime
from libs.orm import QueryAllData from libs.orm import QueryAllData
from libs.token_verify import get_current_user from libs.token_verify import get_current_user
from models.recharge import Settlement, Fitransferlog, FinanceFixLog from models.recharge import Settlement, Fitransferlog, FinanceFixLog, Fiaccount, Account_log
from models.users import V2User from models.users import V2User
from models.guild import Guild from models.guild import Guild
from models.account import Account from models.account import Account
...@@ -198,3 +198,54 @@ def create_fix_table(db: Session, param, h_list): ...@@ -198,3 +198,54 @@ def create_fix_table(db: Session, param, h_list):
except Exception as e: except Exception as e:
return {} return {}
return present return present
def recovery_fix_data(db: Session, dbname, params):
recovery_list = []
if params.get("uuid"):
recovery_list.append(dbname.uuid == params.get("uuid"))
if params.get("start_time"):
recovery_list.append(dbname.create_time >= params.get("start_time"))
if params.get("end_time"):
recovery_list.append(dbname.create_time <= params.get("end_time"))
querydata, count = QueryAllData(db, dbname, params, recovery_list).query_data()
data = [QueryAllData.serialization(item) for item in querydata]
for item in data:
accout_filters = []
accout_filters.append(dbname.uuid == item.get("uuid"))
names=QueryAllData(db, Fiaccount,{},accout_filters).query_filter()
if names:
item['name']=names.name
item['uuid']=names.uuid
else:
item['name']=''
return data, count
def create_recovery_table(db: Session, param):
"""增加修复报表"""
try:
present = Account_log(type=param.type, uuid=param.uuid,out_money=param.out_money,
cont=param.cont, entry_money=param.entry_money,from_time=param.from_time,
create_time=get_now_datetime())
db.add(present)
db.commit()
db.refresh(present)
except Exception as e:
return {}
return present
def update_recovery_table(db: Session,data):
"""修改修复报表"""
try:
accout_filters = []
accout_filters.append(Account_log.id == data.get("id"))
db.query(Account_log).filter(Account_log.id == data.get("id")).update(data)
db.commit()
except Exception as e:
print(e)
return {}
return data
\ No newline at end of file
import json
from datetime import datetime from datetime import datetime
from app.api.statement import crud, schemas, guild from app.api.statement import crud, schemas, guild
from app.api.account import schemas as acc_schemas from app.api.account import schemas as acc_schemas
...@@ -10,7 +11,7 @@ from app.api.statement.guild import GuildSet, paymentset_guild_data, outon_accou ...@@ -10,7 +11,7 @@ from app.api.statement.guild import GuildSet, paymentset_guild_data, outon_accou
from app.api.statement.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList, UserNumber, CreateBill from app.api.statement.schemas import PaymentWithdrawalList, PaymentAdd, PaymentAccountlList, UserNumber, CreateBill
from libs.img_code import new_upload_file, random_number from libs.img_code import new_upload_file, random_number
from libs.result_format import HttpResultResponse from libs.result_format import HttpResultResponse
from models.recharge import Paymentlog, Fiaccount, Fitransferlog from models.recharge import Paymentlog, Fiaccount, Fitransferlog, Account_log
router = APIRouter() router = APIRouter()
...@@ -133,3 +134,26 @@ def finance_fix(data: acc_schemas.FixTable, request: Request, db: Session = Depe ...@@ -133,3 +134,26 @@ def finance_fix(data: acc_schemas.FixTable, request: Request, db: Session = Depe
header_list = request.get("headers") header_list = request.get("headers")
res = guild.create_fix_table(db, data, header_list) res = guild.create_fix_table(db, data, header_list)
return HttpResultResponse(data=res.id) return HttpResultResponse(data=res.id)
@router.post("/data/recovery")
def recovery_fix(data: acc_schemas.Recovery_fix, db: Session = Depends(get_db)):
"""异常数据修复"""
recovery_list, total = guild.recovery_fix_data(db, Account_log,data.dict(exclude_none=True))
return HttpResultResponse(total=total, data=recovery_list)
@router.post("/submit/recovery")
def finance_fix(data: acc_schemas.RecoveryTable,db: Session = Depends(get_db)):
"""新增异常数据修复"""
res = guild.create_recovery_table(db, data)
return HttpResultResponse(data=res.id)
@router.post("/recovery/fix")
def recovery_fix(data: acc_schemas.RecoveryupdateTable, db: Session = Depends(get_db)):
"""异常数据修复"""
res = guild.update_recovery_table(db,data.dict(exclude_none=True))
return HttpResultResponse(data=res.get("id"))
\ No newline at end of file
...@@ -38,7 +38,8 @@ class QueryAllData: ...@@ -38,7 +38,8 @@ class QueryAllData:
''' '''
单个查询 单个查询
''' '''
pass queryData = self.db.query(self.dbname).filter(*self.params_list).first()
return queryData
def set_attrs(self, attrs_dict): def set_attrs(self, attrs_dict):
"""批量更新模型的字段数据 """批量更新模型的字段数据
...@@ -47,6 +48,22 @@ class QueryAllData: ...@@ -47,6 +48,22 @@ class QueryAllData:
setattr(self, key, value) setattr(self, key, value)
return self return self
def direct_add_(self):
"""直接添加事务"""
self.db.session.add(self)
return self
def direct_commit_(self):
"""直接提交"""
self.direct_add_()
self.db.session.commit()
return self
def direct_update_(self):
"""直接更新"""
self.db.session.commit()
return self
def serialization(self, funcs: list = None, remove: set = None, increase: set = None) -> dict: def serialization(self, funcs: list = None, remove: set = None, increase: set = None) -> dict:
"""序列化指定字段 """序列化指定字段
:return: dict({'field_name': field_value}) :return: dict({'field_name': field_value})
......
...@@ -148,3 +148,22 @@ class FinanceFixLog(Base, SerializerMixin): ...@@ -148,3 +148,22 @@ class FinanceFixLog(Base, SerializerMixin):
create_time = Column(DateTime, comment="创建时间") create_time = Column(DateTime, comment="创建时间")
__table_args__ = {'comment': '财务修复日志'} __table_args__ = {'comment': '财务修复日志'}
class Account_log(Base, SerializerMixin):
"""账户修复记录表"""
__tablename__ = "account_log"
id = Column(Integer, primary_key=True, index=True)
cont = Column(String(255), comment="备注")
out_money = Column(DECIMAL(11,3), comment="出账")
entry_money = Column(DECIMAL(11,3), comment="入账")
create_time = Column(DateTime, comment="创建时间")
befor_out_money = Column(DECIMAL, comment="数据产生之前的全部数据")
befor_entry_money = Column(DECIMAL(11,3), comment="创建时间之前的所有数据总和")
uuid = Column(String(255), comment="所属uuid")
from_time = Column(DateTime, comment="数据所属时间")
type = Column(Integer, comment="uuid类型0系统账户1公会账户2用户账户3背包账户")
__table_args__ = {'comment': '财务修复日志'}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment