解决账户中心的问题
This commit is contained in:
@@ -13,6 +13,9 @@ class CreditAccountSerializer(serializers.ModelSerializer):
|
||||
class CreditLedgerSerializer(serializers.ModelSerializer):
|
||||
# 成员展示名:优先真实姓名 → 用户名 → 邮箱;系统流水(无 user)留空
|
||||
user_label = serializers.SerializerMethodField()
|
||||
# 扣费项目:与任务监控类型列同源,供账户中心流水展示
|
||||
task_type = serializers.SerializerMethodField()
|
||||
project_title = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = CreditLedger
|
||||
@@ -21,7 +24,9 @@ class CreditLedgerSerializer(serializers.ModelSerializer):
|
||||
"user",
|
||||
"user_label",
|
||||
"project",
|
||||
"project_title",
|
||||
"task",
|
||||
"task_type",
|
||||
"ledger_type",
|
||||
"amount",
|
||||
"balance_after",
|
||||
@@ -37,6 +42,16 @@ class CreditLedgerSerializer(serializers.ModelSerializer):
|
||||
return ""
|
||||
return user.first_name or user.username or user.email or ""
|
||||
|
||||
def get_task_type(self, obj):
|
||||
task = getattr(obj, "task", None)
|
||||
return getattr(task, "task_type", "") or ""
|
||||
|
||||
def get_project_title(self, obj):
|
||||
project = getattr(obj, "project", None)
|
||||
if project is None:
|
||||
return ""
|
||||
return getattr(project, "title", None) or getattr(project, "name", None) or ""
|
||||
|
||||
|
||||
class CreditReservationSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
||||
@@ -74,6 +74,18 @@ def ledgers(request):
|
||||
queryset = queryset.filter(user_id=user_id)
|
||||
if ledger_type and ledger_type in CreditLedger.Type.values:
|
||||
queryset = queryset.filter(ledger_type=ledger_type)
|
||||
# 按自然月过滤(账户页流水月份下拉);count/分页随月份变化
|
||||
month_param = (request.query_params.get("month") or "").strip()
|
||||
if len(month_param) == 7 and month_param[4] == "-":
|
||||
try:
|
||||
y = int(month_param[:4])
|
||||
m = int(month_param[5:7])
|
||||
if 1 <= m <= 12:
|
||||
month_start = date(y, m, 1)
|
||||
month_end = date(y, m, calendar.monthrange(y, m)[1])
|
||||
queryset = queryset.filter(created_at__date__gte=month_start, created_at__date__lte=month_end)
|
||||
except ValueError:
|
||||
pass
|
||||
# 服务端分页:总数随流水增长(原先写死 [:100] 导致永远 100 条)
|
||||
try:
|
||||
page = max(1, int(request.query_params.get("page", 1)))
|
||||
|
||||
Reference in New Issue
Block a user