refactor(valuation): 重构评估状态逻辑并添加创建时间筛选
统一评估状态为 pending/completed 并兼容旧状态 添加创建时间范围筛选条件 移除发票状态中的 rejected 选项 更新前端路由配置
This commit is contained in:
parent
9359666805
commit
df7ff7af23
@ -203,7 +203,7 @@ async def _perform_valuation_calculation(user_id: int, data: UserValuationCreate
|
||||
},
|
||||
'market_data': list(input_data.get('market_data', {}).keys()),
|
||||
},
|
||||
status='success'
|
||||
status='pending'
|
||||
)
|
||||
result = await valuation_controller.update(valuation_id, update_data)
|
||||
logger.info(
|
||||
|
||||
@ -106,7 +106,7 @@ async def delete_invoice(id: int = Query(...)):
|
||||
@invoice_router.post("/update-status", summary="更新发票状态", response_model=BasicResponse[InvoiceOut], dependencies=[DependAuth, DependPermission])
|
||||
async def update_invoice_status(data: UpdateStatus):
|
||||
"""
|
||||
更新发票状态(pending|invoiced|rejected|refunded)
|
||||
更新发票状态(pending|invoiced|refunded)
|
||||
"""
|
||||
out = await invoice_controller.update_status(data)
|
||||
return Success(data=out or {}, msg="更新成功" if out else "未找到")
|
||||
|
||||
@ -92,6 +92,8 @@ async def get_valuations(
|
||||
submitted_end: Optional[str] = Query(None, description="提交时间结束(毫秒或ISO)"),
|
||||
audited_start: Optional[str] = Query(None, description="审核时间开始(证书修改时间,毫秒或ISO)"),
|
||||
audited_end: Optional[str] = Query(None, description="审核时间结束(证书修改时间,毫秒或ISO)"),
|
||||
create_start: Optional[str] = Query(None, description="创建时间开始(毫秒或ISO)"),
|
||||
create_end: Optional[str] = Query(None, description="创建时间结束(毫秒或ISO)"),
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
size: int = Query(10, ge=1, le=100, description="每页数量")
|
||||
):
|
||||
@ -108,6 +110,8 @@ async def get_valuations(
|
||||
submitted_end=submitted_end,
|
||||
audited_start=audited_start,
|
||||
audited_end=audited_end,
|
||||
create_start=create_start,
|
||||
create_end=create_end,
|
||||
page=page,
|
||||
size=size
|
||||
)
|
||||
|
||||
@ -22,7 +22,7 @@ class UserValuationController:
|
||||
"""用户创建估值评估"""
|
||||
valuation_data = data.model_dump()
|
||||
valuation_data['user_id'] = user_id
|
||||
valuation_data['status'] = "success" # 根据计算结果显示设置状态
|
||||
valuation_data['status'] = status
|
||||
|
||||
# 添加计算结果到数据库
|
||||
if calculation_result:
|
||||
|
||||
@ -159,9 +159,17 @@ class ValuationController:
|
||||
if query.is_active is not None:
|
||||
queryset = queryset.filter(is_active=query.is_active)
|
||||
|
||||
# 添加状态筛选
|
||||
# 添加状态筛选(支持 completed 聚合以及旧值兼容)
|
||||
if hasattr(query, 'status') and query.status:
|
||||
queryset = queryset.filter(status=query.status)
|
||||
s = query.status
|
||||
if s == 'completed':
|
||||
queryset = queryset.filter(status__in=['success'])
|
||||
elif s == 'approved':
|
||||
queryset = queryset.filter(status='success')
|
||||
elif s == 'rejected':
|
||||
queryset = queryset.filter(status='fail')
|
||||
else:
|
||||
queryset = queryset.filter(status=s)
|
||||
|
||||
if getattr(query, 'phone', None):
|
||||
queryset = queryset.filter(user__phone__icontains=query.phone)
|
||||
@ -180,8 +188,8 @@ class ValuationController:
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
s_dt = _parse_time(getattr(query, 'submitted_start', None))
|
||||
e_dt = _parse_time(getattr(query, 'submitted_end', None))
|
||||
s_dt = _parse_time(getattr(query, 'submitted_start', None) or getattr(query, 'create_start', None))
|
||||
e_dt = _parse_time(getattr(query, 'submitted_end', None) or getattr(query, 'create_end', None))
|
||||
if s_dt:
|
||||
queryset = queryset.filter(created_at__gte=s_dt)
|
||||
if e_dt:
|
||||
|
||||
@ -30,7 +30,7 @@ class Invoice(BaseModel, TimestampMixin):
|
||||
register_phone = fields.CharField(max_length=32, description="注册电话")
|
||||
bank_name = fields.CharField(max_length=128, description="开户银行")
|
||||
bank_account = fields.CharField(max_length=64, description="银行账号")
|
||||
status = fields.CharField(max_length=16, description="状态: pending|invoiced|rejected|refunded", index=True, default="pending")
|
||||
status = fields.CharField(max_length=16, description="状态: pending|invoiced|refunded", index=True, default="pending")
|
||||
app_user_id = fields.IntField(null=True, description="App用户ID", index=True)
|
||||
header = fields.ForeignKeyField("models.InvoiceHeader", related_name="invoices", null=True, description="抬头关联")
|
||||
wechat = fields.CharField(max_length=64, null=True, description="微信号", index=True)
|
||||
|
||||
@ -82,7 +82,7 @@ class ValuationAssessment(Model):
|
||||
|
||||
# 系统字段
|
||||
user = fields.ForeignKeyField("models.AppUser", related_name="valuations", description="提交用户")
|
||||
status = fields.CharField(max_length=20, default="success", description="评估状态: pending(待审核), success(已通过), fail(已拒绝)")
|
||||
status = fields.CharField(max_length=20, default="pending", description="评估状态: pending(待审核), approved(已完成)")
|
||||
admin_notes = fields.TextField(null=True, description="管理员备注")
|
||||
created_at = fields.DatetimeField(auto_now_add=True, description="创建时间")
|
||||
updated_at = fields.DatetimeField(auto_now=True, description="更新时间")
|
||||
|
||||
@ -97,7 +97,7 @@ class InvoiceList(BaseModel):
|
||||
|
||||
class UpdateStatus(BaseModel):
|
||||
id: int
|
||||
status: str = Field(..., pattern=r"^(pending|invoiced|rejected|refunded)$")
|
||||
status: str = Field(..., pattern=r"^(pending|invoiced|refunded)$")
|
||||
|
||||
|
||||
class UpdateType(BaseModel):
|
||||
|
||||
@ -325,11 +325,13 @@ class ValuationAssessmentQuery(BaseModel):
|
||||
institution: Optional[str] = Field(None, description="所属机构")
|
||||
industry: Optional[str] = Field(None, description="所属行业")
|
||||
heritage_level: Optional[str] = Field(None, description="非遗等级")
|
||||
status: Optional[str] = Field(None, description="评估状态: pending(待审核), approved(已通过), rejected(已拒绝)")
|
||||
status: Optional[str] = Field(None, description="评估状态: pending(待审核), completed(已完成)")
|
||||
is_active: Optional[bool] = Field(None, description="是否激活")
|
||||
phone: Optional[str] = Field(None, description="手机号模糊查询")
|
||||
submitted_start: Optional[str] = Field(None, description="提交时间开始(毫秒时间戳或ISO字符串)")
|
||||
submitted_end: Optional[str] = Field(None, description="提交时间结束(毫秒时间戳或ISO字符串)")
|
||||
create_start: Optional[str] = Field(None, description="创建时间开始(毫秒时间戳或ISO字符串)")
|
||||
create_end: Optional[str] = Field(None, description="创建时间结束(毫秒时间戳或ISO字符串)")
|
||||
audited_start: Optional[str] = Field(None, description="审核时间开始(证书修改时间,毫秒时间戳或ISO字符串)")
|
||||
audited_end: Optional[str] = Field(None, description="审核时间结束(证书修改时间,毫秒时间戳或ISO字符串)")
|
||||
page: int = Field(1, ge=1, description="页码")
|
||||
|
||||
@ -21,14 +21,11 @@ server {
|
||||
index index.html index.htm;
|
||||
try_files $uri /index.html;
|
||||
}
|
||||
# PC 前端(/pc/ 前缀)
|
||||
location = /pc {
|
||||
return 302 /pc/;
|
||||
}
|
||||
|
||||
location ^~ /pc/ {
|
||||
alias /opt/vue-fastapi-admin/web1/dist/;
|
||||
index index.html;
|
||||
try_files $uri $uri/ /index.html;
|
||||
root /opt/vue-fastapi-admin/web1/dist;
|
||||
index index.html index.htm;
|
||||
try_files $uri /index.html;
|
||||
}
|
||||
location ^~ /api/ {
|
||||
proxy_pass http://127.0.0.1:9999;
|
||||
@ -36,4 +33,4 @@ server {
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user