finish
This commit is contained in:
@@ -4,7 +4,7 @@ from django.db.models import Sum
|
||||
from django import forms
|
||||
from unfold.admin import ModelAdmin, TabularInline
|
||||
from unfold.decorators import display
|
||||
from .models import ESP32Config, Order, Salesperson, WeChatPayConfig, Service, VBCourse, ProductFeature, CommissionLog, WeChatUser, Distributor, Withdrawal, ServiceOrder
|
||||
from .models import ESP32Config, Order, Salesperson, WeChatPayConfig, Service, VCCourse, ProductFeature, CommissionLog, WeChatUser, Distributor, Withdrawal, ServiceOrder, CourseEnrollment
|
||||
import qrcode
|
||||
from io import BytesIO
|
||||
import base64
|
||||
@@ -83,7 +83,7 @@ class ESP32ConfigAdmin(ModelAdmin):
|
||||
inlines = [ProductFeatureInline]
|
||||
fieldsets = (
|
||||
('基本信息', {
|
||||
'fields': ('name', 'price', 'stock', 'description')
|
||||
'fields': ('name', 'price', 'stock', 'commission_rate', 'description')
|
||||
}),
|
||||
('硬件参数', {
|
||||
'fields': ('chip_type', 'flash_size', 'ram_size', 'has_camera', 'has_microphone')
|
||||
@@ -141,17 +141,21 @@ class ServiceOrderAdmin(ModelAdmin):
|
||||
}),
|
||||
)
|
||||
|
||||
@admin.register(VBCourse)
|
||||
class VBCourseAdmin(ModelAdmin):
|
||||
list_display = ('title', 'course_type', 'tag', 'instructor', 'lesson_count', 'duration', 'created_at')
|
||||
@admin.register(VCCourse)
|
||||
class VCCourseAdmin(ModelAdmin):
|
||||
list_display = ('title', 'course_type', 'price', 'tag', 'instructor', 'lesson_count', 'duration', 'created_at')
|
||||
search_fields = ('title', 'description', 'instructor', 'tag')
|
||||
list_filter = ('course_type', 'instructor', 'tag')
|
||||
fieldsets = (
|
||||
('基本信息', {
|
||||
'fields': ('title', 'description', 'course_type', 'tag')
|
||||
'fields': ('title', 'description', 'course_type', 'tag', 'price')
|
||||
}),
|
||||
('讲师信息', {
|
||||
'fields': ('instructor', 'instructor_title', 'instructor_desc', 'instructor_avatar', 'instructor_avatar_url'),
|
||||
'description': '讲师头像上传和URL二选一,优先使用URL'
|
||||
}),
|
||||
('课程详情', {
|
||||
'fields': ('instructor', 'duration', 'lesson_count')
|
||||
'fields': ('duration', 'lesson_count', 'content')
|
||||
}),
|
||||
('封面', {
|
||||
'fields': ('cover_image', 'cover_image_url'),
|
||||
@@ -163,6 +167,24 @@ class VBCourseAdmin(ModelAdmin):
|
||||
}),
|
||||
)
|
||||
|
||||
@admin.register(CourseEnrollment)
|
||||
class CourseEnrollmentAdmin(ModelAdmin):
|
||||
list_display = ('customer_name', 'course', 'phone_number', 'status', 'created_at')
|
||||
list_filter = ('status', 'course', 'created_at')
|
||||
search_fields = ('customer_name', 'phone_number', 'wechat_id')
|
||||
|
||||
fieldsets = (
|
||||
('报名信息', {
|
||||
'fields': ('course', 'status', 'created_at')
|
||||
}),
|
||||
('客户资料', {
|
||||
'fields': ('customer_name', 'phone_number', 'wechat_id', 'email', 'message')
|
||||
}),
|
||||
('销售归属', {
|
||||
'fields': ('salesperson', 'distributor')
|
||||
}),
|
||||
)
|
||||
|
||||
@admin.register(Salesperson)
|
||||
class SalespersonAdmin(ModelAdmin):
|
||||
list_display = ('name', 'code', 'total_sales', 'view_promotion_url')
|
||||
@@ -240,14 +262,14 @@ class SalespersonAdmin(ModelAdmin):
|
||||
|
||||
@admin.register(CommissionLog)
|
||||
class CommissionLogAdmin(ModelAdmin):
|
||||
list_display = ('id', 'salesperson', 'amount', 'level', 'status', 'created_at')
|
||||
list_filter = ('status', 'level', 'salesperson', 'created_at')
|
||||
search_fields = ('salesperson__name', 'order__id')
|
||||
list_display = ('id', 'salesperson', 'distributor', 'amount', 'level', 'status', 'created_at')
|
||||
list_filter = ('status', 'level', 'salesperson', 'distributor', 'created_at')
|
||||
search_fields = ('salesperson__name', 'distributor__user__nickname', 'order__id')
|
||||
readonly_fields = ('amount', 'level', 'created_at')
|
||||
|
||||
fieldsets = (
|
||||
('基本信息', {
|
||||
'fields': ('salesperson', 'order', 'amount', 'level')
|
||||
'fields': ('salesperson', 'distributor', 'order', 'amount', 'level')
|
||||
}),
|
||||
('状态管理', {
|
||||
'fields': ('status', 'created_at')
|
||||
@@ -256,23 +278,31 @@ class CommissionLogAdmin(ModelAdmin):
|
||||
|
||||
@admin.register(Order)
|
||||
class OrderAdmin(ModelAdmin):
|
||||
list_display = ('id', 'customer_name', 'config', 'total_price', 'status', 'courier_name', 'tracking_number', 'salesperson', 'created_at')
|
||||
list_filter = ('status', 'salesperson', 'created_at')
|
||||
list_display = ('id', 'customer_name', 'get_item_name', 'total_price', 'status', 'salesperson', 'distributor', 'created_at')
|
||||
list_filter = ('status', 'salesperson', 'distributor', 'created_at')
|
||||
search_fields = ('id', 'customer_name', 'phone_number', 'wechat_trade_no')
|
||||
readonly_fields = ('total_price', 'created_at', 'wechat_trade_no')
|
||||
|
||||
def get_item_name(self, obj):
|
||||
if obj.config:
|
||||
return f"[硬件] {obj.config.name}"
|
||||
if obj.course:
|
||||
return f"[课程] {obj.course.title}"
|
||||
return "未知商品"
|
||||
get_item_name.short_description = "购买商品"
|
||||
|
||||
fieldsets = (
|
||||
('订单信息', {
|
||||
'fields': ('config', 'quantity', 'total_price', 'status', 'created_at')
|
||||
'fields': ('config', 'course', 'quantity', 'total_price', 'status', 'created_at')
|
||||
}),
|
||||
('客户信息', {
|
||||
'fields': ('customer_name', 'phone_number', 'shipping_address')
|
||||
'fields': ('customer_name', 'phone_number', 'shipping_address', 'wechat_user')
|
||||
}),
|
||||
('物流信息', {
|
||||
'fields': ('courier_name', 'tracking_number')
|
||||
}),
|
||||
('销售归属', {
|
||||
'fields': ('salesperson',)
|
||||
'fields': ('salesperson', 'distributor')
|
||||
}),
|
||||
('支付信息', {
|
||||
'fields': ('wechat_trade_no',)
|
||||
|
||||
Reference in New Issue
Block a user