日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

K12(在线学习的平台)

發布時間:2023/11/27 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K12(在线学习的平台) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目:K12(在線學習的平臺)

一、背景

目的是做一個在線的學習平臺,提高學生的課程完成度

K12:大目標是要取代線下班

  • - 錄制專門的視頻
  • - 導師的監管:如果沒有主動和那個學生聊天,就扣錢
  • - 學生的激勵:如果提前學完了,學習能力很強,可以免學費

二、系統架構

- 主站- rest api - vue 
- 導師后臺  (stark)- django - stark 
- 管理后臺  (stark)- django - stark 

三、人員和部門

- 后端開發(5人)- 主站(3)- 導師后臺(1)- 管理后臺(1)
- 前端開發(1)
- UI (1)
- 測試(1)
- 運維(部署:上線)(1)
- 運營(推廣出去)(2)
- 銷售 (2)
- 導師 (2)
- 產品經理 (1)- 人事
- 財務

四、需求分析

主站- 課程- 普通課程、學位課- 普通課程:比較小的課程- 學位課:從開始+項目+就業 - 分配一對一的導師- 導師對你進行監管,督促你學習- 保就業- 如果你%50的時間學完了,退一般的學費,等。- 課程列表、課程詳細- 課程周期的不同定價格- 個人的課程中心- 支付- 銀聯- 支付寶- 微信- 優惠券策略(滿減(滿多少減多少),立減,打折)- 貝里:可直接抵現金- 個人購物車- 深科技- 文章或者爬取的別人的文章(運營需要審核)
     - 深刻有哪些功能?
        - 點贊、評論、查看、收藏 - 登錄 、注冊 導師后臺 管理后臺

具體進一步談業務需求

a、課程:業務相關:1、學位課,如果你學的快;最多返指定金額的65%2、作業做的好,會把額外的35%返給你3、普通課程購買課程后,在我的訂單中去評價4、購物車的數據沒有數據表。保存到redis里面去了兩大部分操作#redis操作在課程詳細頁面,選擇價格策略,點擊加入購物車,吧視頻和價格策略放到了redis中在購物車頁面,可以對redis中保存的購買的視頻數據和價格數據可以刪除,修改,添加,查看(刷新)選中,去結算中心#數據庫操作#pip freeze > requirement.txt #生成文件#pip install -r requirement.txt  #下載所有的版本在結算頁面:優惠券- 選擇單一的優惠券(通用、滿減、折扣)- 課程優惠券:綁定課程的優惠券- 選擇全站的優惠券(通用、滿減、折扣)#單一的優惠券用完,再計算,看是否滿足全站的通用卷- 選擇貝里- 選擇支付寶,點擊立即支付- 在數據庫中生成一個訂單這個訂單如果用了優惠券,優惠券狀態改為已使用如果用了貝里,貝里的金額減少如果取消訂單,優惠券才不是使用狀態在支付頁面,掃碼狀態為已支付在我的訂單中應該去數據庫中讀數據在購物車或者結算中心的時候去redis里面讀數據課程列表和課程詳細等等等如果購買課程- 普通課程- 學位課程- 每個模塊生成記錄(人和課程模塊的記錄)  - 買完之后自動生成- 開通模塊(后臺)- 導師跟進(導師)- 交作業(主站)b、深科技相關來源文章收藏通用評論表c、購買支付流程課程id和價格策略id傳值的時候可以傳兩個值- 通過策略id找到買的那個課程- 通過課程id 獲取所有的價格策略處理請求1、檢測課程是否上線,下線2、通過課程id 獲取所有的價格策略,和傳過來的進行對比3、檢測用戶提交的價格策略是否在所有的價格策略中4、將購物的視頻添加到購物車(redis) - 同一個課程只能買一個,不允許一下加入兩個吧數據放到redis中,那么怎么存?一個人就有一個購物車。可以通過用戶id來存所有的購物車= {1:{課程id1:{'prices':[],'price':9,'title':'python','img':'課程圖片'},課程id2:{'prices':[]}}  }#如果看到課程已經在里面了,就不在里面添加了,這也就是用redis的原因class ShoppingCat(APIView):def post():#點擊加入購物車保存數據到redisdef get():#查看購物車列表def delete():#刪除def patch():#局部更新pass5、去結算(先簡單的說一下)買的所有的課程課程1  價格策略  課程2  價格策略  課程3  價格策略  點擊了去結算優惠券貝里

五、表結構

課程相關的13張表
  課程大類表:e.g 前端,后端課程子類表:e.g python ,linux普通課程表學位課表##學位課可以有如下好處學位獎學金表
##當然學位課和普通課程共有的價格策略表優惠券表
課程詳細表課程章節表課程目錄表課程問答表課程評價(先不討論)
  課程大綱
##老師表contenttype contentType 可以一下關聯兩張表,django自己提供了,不用自己創建

深科技相關的4張表
  文章來源
  文章資訊
  收藏(既能收藏課程,也能收藏文章,可以用contenttype)
  評論(可以用contenttype的形式也可以用ForeignKey的形式)

用戶相關的兩張表
  用戶信息表account
  用戶認證表userauthtoken
    - 如果用戶初次登錄,給用戶創建一個token,如果已經有token了,下次用戶訪問的時候直接帶上token,如果沒有token就說明沒有登錄,就沒有訪問其他頁面的權限

購買支付相關的7張表
  已報名課程表EnrolledCourse(誰購買了那個課程)
  學位課報名表
  已報名的學位課程表EnrolledDegreeCourse
  優惠券發放、消費記錄
  訂單表
  訂單詳情
  貝里交易記錄

其他相關的6張表
  課程評價
  學位課程評價
  學位課程的模塊學習進度
  為學生開通一個模塊
  學生作業記錄及成績
  學員跟進記錄
  
  
  
  
  
  

1、簡單表結構設計分析:

需要知道的知識點:

  現在學位課和普通課程都有自己的價格策略和優惠券,現在是學位課已經有了自己的價格策略,那么如果普通課程也要加價格策略,怎么弄呢?

一下有三種方法:

方法一:再單獨創建一個表

方法二:不用單獨創建一個表,可以多添加一個字段,其中的一個為NULL。相比方法一省了一張表

方法三:可以通過ContentType ,這個表里面存的是應用的名字以及表名。但是在我們makemigrations和migrate的時候django已經幫我們創建好了,如下圖。就不用我們自己創建了

?這樣關聯的好處:可以ForeignKey任何一張表。里面的xid是關聯表的某一行數據,

這樣關聯以后,如果想在價格策略里面在添加一行數據,怎么添加呢?

有兩種方式:

方式一:手動插入

  • 自己手動查出content_type_id 和關聯表里的某一行數據xid。查出來添加到價格策略表里面去

方式二:利用GenericForeignKey

  • 可以通過導入?GenericForeignKey(GenericForeignKey有自動查找的功能,協助你快速做操作,沒有也可以,自己手動查詢)
from django.contrib.contenttypes.fields import GenericForeignKey

使用:

content_object = GenericForeignKey('content_type', 'object_id') #一下可以查到兩個表的數據,自動插入到價格策略表里了,
優惠券表也是如此。只是為了查詢方便

另外補充一個GenericRelation

from django.contrib.contenttypes.fields import GenericRelation

GenericRelation:也是幫助做快速查詢的,就像反向關聯的releated_name=‘xx’。以后查找的時候通可以通過點字段名的方式去查找

 # 用于GenericForeignKey反向查詢, 不會生成表字段,切勿刪除coupon = GenericRelation("Coupon")  #也是幫助做快速查詢的,可以直接查出所有的學位課的價格策略等

2、具體表結構設計如下:

  1 from django.db import models2 from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation3 #GenericForeignKey有自動查找的功能,協助你快速做操作,沒有也可以,自己手動查詢4 #GenericRelation:也是幫助做快速查詢的,可以直接查出所有的學位課的價格策略等5 6 from django.contrib.contenttypes.models import ContentType7 from django.db.models import Q8 from django.utils.safestring import mark_safe9 from django.db import models10 import hashlib11 12 class CourseCategory(models.Model):13     """課程大類, e.g 前端  后端..."""14     name = models.CharField(max_length=64, unique=True)15 16     def __str__(self):17         return "%s" % self.name18 19     class Meta:20         verbose_name = "課程大類"   #單數21         verbose_name_plural = "課程大類"  #復數22 23 class CourseSubCategory(models.Model):24     """課程子類, e.g python linux """25     category = models.ForeignKey("CourseCategory",verbose_name='所屬類')26     name = models.CharField(max_length=64, unique=True)27 28     def __str__(self):29         return "%s" % self.name30 31     class Meta:32         verbose_name = "課程子類"33         verbose_name_plural = "課程子類"34 35 class DegreeCourse(models.Model):36     """學位課程"""37     name = models.CharField(max_length=128, unique=True)38     course_img = models.CharField(max_length=255, verbose_name="縮略圖")39     brief = models.TextField(verbose_name="學位課程簡介", )40     total_scholarship = models.PositiveIntegerField(verbose_name="總獎學金(貝里)", default=40000)41     mentor_compensation_bonus = models.PositiveIntegerField(verbose_name="本課程的導師輔導費用(貝里)", default=15000)42     # 用于GenericForeignKey反向查詢, 不會生成表字段,切勿刪除43     coupon = GenericRelation("Coupon")  #也是幫助做快速查詢的,可以直接查出所有的學位課的價格策略等44     # 為了計算學位獎學金45     period = models.PositiveIntegerField(verbose_name="建議學習周期(days)", default=150)46     prerequisite = models.TextField(verbose_name="課程先修要求", max_length=1024)47     teachers = models.ManyToManyField("Teacher", verbose_name="課程講師")48     # 用于GenericForeignKey反向查詢,不會生成表字段,切勿刪除49     degreecourse_price_policy = GenericRelation("PricePolicy")50 51     def __str__(self):52         return self.name53 54 class Course(models.Model):55     """課程"""56     name = models.CharField(max_length=128, unique=True)57     course_img = models.CharField(max_length=255)58     sub_category = models.ForeignKey("CourseSubCategory")59     course_type_choices = ((0, '付費'), (1, 'VIP專享'), (2, '學位課程'))60     course_type = models.SmallIntegerField(choices=course_type_choices)61     degree_course = models.ForeignKey("DegreeCourse", blank=True, null=True, help_text="若是學位課程,此處關聯學位表")62     brief = models.TextField(verbose_name="課程概述", max_length=2048)63     level_choices = ((0, '初級'), (1, '中級'), (2, '高級'))64     level = models.SmallIntegerField(choices=level_choices, default=1)65     pub_date = models.DateField(verbose_name="發布日期", blank=True, null=True)66     period = models.PositiveIntegerField(verbose_name="建議學習周期(days)", default=7)67     order = models.IntegerField("課程順序", help_text="從上一個課程數字往后排")68     attachment_path = models.CharField(max_length=128, verbose_name="課件路徑", blank=True, null=True)69     status_choices = ((0, '上線'), (1, '下線'), (2, '預上線'))70     status = models.SmallIntegerField(choices=status_choices, default=0)71     template_id = models.SmallIntegerField("前端模板id", default=1)72     coupon = GenericRelation("Coupon")73     # 用于GenericForeignKey反向查詢,不會生成表字段,切勿刪除74     price_policy = GenericRelation("PricePolicy")75 76     def __str__(self):77         return "%s(%s)" % (self.name, self.get_course_type_display())78 79     def save(self, *args, **kwargs):80         if self.course_type == 2:81             if not self.degree_course:82                 raise ValueError("學位課程必須關聯對應的學位表")83         super(Course, self).save(*args, **kwargs)84 85 class CourseDetail(models.Model):86     """課程詳情頁內容"""87     course = models.OneToOneField("Course")88     hours = models.IntegerField("課時")89     course_slogan = models.CharField(max_length=125, blank=True, null=True)90     video_brief_link = models.CharField(verbose_name='課程介紹', max_length=255, blank=True, null=True)91     why_study = models.TextField(verbose_name="為什么學習這門課程")92     what_to_study_brief = models.TextField(verbose_name="我將學到哪些內容")93     career_improvement = models.TextField(verbose_name="此項目如何有助于我的職業生涯")94     prerequisite = models.TextField(verbose_name="課程先修要求", max_length=1024)95     recommend_courses = models.ManyToManyField("Course", related_name="recommend_by", blank=True)96     teachers = models.ManyToManyField("Teacher", verbose_name="課程講師")97 98     def __str__(self):99         return "%s" % self.course
100 
101 class OftenAskedQuestion(models.Model):
102     """常見問題"""
103     content_type = models.ForeignKey(ContentType,
104                                      limit_choices_to={'model__contains': 'course'})  # 關聯course or degree_course
105     object_id = models.PositiveIntegerField()
106     content_object = GenericForeignKey('content_type', 'object_id')
107 
108     question = models.CharField(max_length=255)
109     answer = models.TextField(max_length=1024)
110 
111     def __str__(self):
112         return "%s-%s" % (self.content_object, self.question)
113 
114     class Meta:
115         unique_together = ('content_type', 'object_id', 'question')
116 
117 class CourseOutline(models.Model):
118     """課程大綱"""
119     course_detail = models.ForeignKey("CourseDetail")
120     title = models.CharField(max_length=128)
121     # 前端顯示順序
122     order = models.PositiveSmallIntegerField(default=1)
123 
124     content = models.TextField("內容", max_length=2048)
125 
126     def __str__(self):
127         return "%s" % self.title
128 
129     class Meta:
130         unique_together = ('course_detail', 'title')
131 
132 class CourseChapter(models.Model):
133     """課程章節"""
134     course = models.ForeignKey("Course", related_name='coursechapters')
135     chapter = models.SmallIntegerField(verbose_name="第幾章", default=1)
136     name = models.CharField(max_length=128)
137     summary = models.TextField(verbose_name="章節介紹", blank=True, null=True)
138     pub_date = models.DateField(verbose_name="發布日期", auto_now_add=True)
139 
140     class Meta:
141         unique_together = ("course", 'chapter')
142 
143     def __str__(self):
144         return "%s:(第%s章)%s" % (self.course, self.chapter, self.name)
145 
146 class Teacher(models.Model):
147     """講師、導師表"""
148     name = models.CharField(max_length=32)
149     role_choices = ((0, '講師'), (1, '導師'))
150     role = models.SmallIntegerField(choices=role_choices, default=0)
151     title = models.CharField(max_length=64, verbose_name="職位、職稱")
152     signature = models.CharField(max_length=255, help_text="導師簽名", blank=True, null=True)
153     image = models.CharField(max_length=128)
154     brief = models.TextField(max_length=1024)
155 
156     def __str__(self):
157         return self.name
158 
159 class PricePolicy(models.Model):
160     """價格與有課程效期表"""
161     content_type = models.ForeignKey(ContentType)  # 關聯course or degree_course
162     object_id = models.PositiveIntegerField()
163     content_object = GenericForeignKey('content_type', 'object_id')
164 
165     # course = models.ForeignKey("Course")
166     valid_period_choices = ((1, '1天'), (3, '3天'),
167                             (7, '1周'), (14, '2周'),
168                             (30, '1個月'),
169                             (60, '2個月'),
170                             (90, '3個月'),
171                             (180, '6個月'), (210, '12個月'),
172                             (540, '18個月'), (720, '24個月'),
173                             )
174     valid_period = models.SmallIntegerField(choices=valid_period_choices)
175     price = models.FloatField()
176 
177     class Meta:
178         unique_together = ("content_type", 'object_id', "valid_period")
179 
180     def __str__(self):
181         return "%s(%s)%s" % (self.content_object, self.get_valid_period_display(), self.price)
182 
183 class CourseSection(models.Model):
184     """課時目錄"""
185     chapter = models.ForeignKey("CourseChapter", related_name='coursesections')
186     name = models.CharField(max_length=128)
187     order = models.PositiveSmallIntegerField(verbose_name="課時排序", help_text="建議每個課時之間空1至2個值,以備后續插入課時")
188     section_type_choices = ((0, '文檔'), (1, '練習'), (2, '視頻'))
189     section_type = models.SmallIntegerField(default=2, choices=section_type_choices)
190 
191 
192     section_link = models.CharField(max_length=255, blank=True, null=True, help_text="若是video,填vid,若是文檔,填link")
193     # vid:cc視頻,唯一標識:sdfsgdfgdgfhgfh
194     video_time = models.CharField(verbose_name="視頻時長", blank=True, null=True, max_length=32)  # 僅在前端展示使用
195     pub_date = models.DateTimeField(verbose_name="發布時間", auto_now_add=True)
196     free_trail = models.BooleanField("是否可試看", default=False)
197 
198 
199     class Meta:
200         unique_together = ('chapter', 'section_link')
201 
202 
203     def __str__(self):
204         return "%s-%s" % (self.chapter, self.name)
205 
206 class Coupon(models.Model):
207     """優惠券生成規則"""
208     name = models.CharField(max_length=64, verbose_name="活動名稱")
209     brief = models.TextField(blank=True, null=True, verbose_name="優惠券介紹")
210     coupon_type_choices = ((0, '通用券'), (1, '滿減券'), (2, '折扣券'))
211     coupon_type = models.SmallIntegerField(choices=coupon_type_choices, default=0, verbose_name="券類型")
212 
213     money_equivalent_value = models.IntegerField(verbose_name="等值貨幣")
214     off_percent = models.PositiveSmallIntegerField("折扣百分比", help_text="只針對折扣券,例7.9折,寫79", blank=True, null=True)
215     minimum_consume = models.PositiveIntegerField("最低消費", default=0, help_text="僅在滿減券時填寫此字段")
216 
217     content_type = models.ForeignKey(ContentType, blank=True, null=True)
218     object_id = models.PositiveIntegerField("綁定課程", blank=True, null=True, help_text="可以把優惠券跟課程綁定")
219     content_object = GenericForeignKey('content_type', 'object_id')
220 
221     quantity = models.PositiveIntegerField("數量(張)", default=1)
222     open_date = models.DateField("優惠券領取開始時間")
223     close_date = models.DateField("優惠券領取結束時間")
224     valid_begin_date = models.DateField(verbose_name="有效期開始時間", blank=True, null=True)
225     valid_end_date = models.DateField(verbose_name="有效結束時間", blank=True, null=True)
226     coupon_valid_days = models.PositiveIntegerField(verbose_name="優惠券有效期(天)", blank=True, null=True,
227                                                     help_text="自券被領時開始算起")
228     date = models.DateTimeField(auto_now_add=True)
229 
230     def __str__(self):
231         return "%s(%s)" % (self.get_coupon_type_display(), self.name)
232 
233     def save(self, *args, **kwargs):
234         if not self.coupon_valid_days or (self.valid_begin_date and self.valid_end_date):
235             if self.valid_begin_date and self.valid_end_date:
236                 if self.valid_end_date <= self.valid_begin_date:
237                     raise ValueError("valid_end_date 有效期結束日期必須晚于 valid_begin_date ")
238             if self.coupon_valid_days == 0:
239                 raise ValueError("coupon_valid_days 有效期不能為0")
240         if self.close_date < self.open_date:
241             raise ValueError("close_date 優惠券領取結束時間必須晚于 open_date優惠券領取開始時間 ")
242 
243         super(Coupon, self).save(*args, **kwargs)
課程相關的13張表
 1 # ######################## 深科技相關 ########################2 3 class ArticleSource(models.Model):4     """文章來源"""5     name = models.CharField(max_length=64, unique=True)6 7     def __str__(self):8         return self.name9 
10 
11 class Article(models.Model):
12     """文章資訊"""
13     title = models.CharField(max_length=255, unique=True, db_index=True, verbose_name="標題")
14     source = models.ForeignKey("ArticleSource", verbose_name="來源")
15     article_type_choices = ((0, '資訊'), (1, '視頻'))
16     article_type = models.SmallIntegerField(choices=article_type_choices, default=0)
17     brief = models.TextField(max_length=512, verbose_name="摘要")
18     head_img = models.CharField(max_length=255)
19     content = models.TextField(verbose_name="文章正文")
20     pub_date = models.DateTimeField(verbose_name="上架日期")
21     offline_date = models.DateTimeField(verbose_name="下架日期")
22     status_choices = ((0, '在線'), (1, '下線'))
23     status = models.SmallIntegerField(choices=status_choices, default=0, verbose_name="狀態")
24     order = models.SmallIntegerField(default=0, verbose_name="權重", help_text="文章想置頂,可以把數字調大,不要超過1000")
25     vid = models.CharField(max_length=128, verbose_name="視頻VID", help_text="文章類型是視頻, 則需要添加視頻VID", blank=True, null=True)
26     comment_num = models.SmallIntegerField(default=0, verbose_name="評論數")
27     agree_num = models.SmallIntegerField(default=0, verbose_name="點贊數")
28     view_num = models.SmallIntegerField(default=0, verbose_name="觀看數")
29     collect_num = models.SmallIntegerField(default=0, verbose_name="收藏數")
30 
31     tags = models.ManyToManyField("Tags", blank=True, verbose_name="標簽")
32     date = models.DateTimeField(auto_now_add=True, verbose_name="創建日期")
33 
34     position_choices = ((0, '信息流'), (1, 'banner大圖'), (2, 'banner小圖'))
35     position = models.SmallIntegerField(choices=position_choices, default=0, verbose_name="位置")
36     comment = GenericRelation("Comment")  # 用于GenericForeignKey反向查詢, 不會生成表字段,切勿刪除,如有疑問請聯系老村長
37 
38     def __str__(self):
39         return "%s-%s" % (self.source, self.title)
40 
41 
42 class Collection(models.Model):
43     """收藏"""
44     content_type = models.ForeignKey(ContentType)
45     object_id = models.PositiveIntegerField()
46     content_object = GenericForeignKey('content_type', 'object_id')
47 
48     account = models.ForeignKey("Account")
49     date = models.DateTimeField(auto_now_add=True)
50 
51     class Meta:
52         unique_together = ('content_type', 'object_id', 'account')
53 
54 
55 # 深科技評論和視頻評論
56 class Comment(models.Model):
57     """通用的評論表: 課程評論 """
58     content_type = models.ForeignKey(ContentType, blank=True, null=True, verbose_name="類型")
59     object_id = models.PositiveIntegerField(blank=True, null=True)
60     content_object = GenericForeignKey('content_type', 'object_id')
61 
62     p_node = models.ForeignKey("self", blank=True, null=True, verbose_name="父級評論")
63     content = models.TextField(max_length=1024)
64     account = models.ForeignKey("Account", verbose_name="會員名")
65     disagree_number = models.IntegerField(default=0, verbose_name="踩")
66     agree_number = models.IntegerField(default=0, verbose_name="贊同數")
67     date = models.DateTimeField(auto_now_add=True)
68 
69     def __str__(self):
70         return self.content
深科技相關
  1 # ######################## 購買課程相關 ########################2 3 class EnrolledCourse(models.Model):4     """已報名課程,不包括學位課程"""5     account = models.ForeignKey("Account")6     course = models.ForeignKey("Course", limit_choices_to=~Q(course_type=2))7     enrolled_date = models.DateTimeField(auto_now_add=True)8     valid_begin_date = models.DateField(verbose_name="有效期開始自")9     valid_end_date = models.DateField(verbose_name="有效期結束至")10     status_choices = ((0, '已開通'), (1, '已過期'))11     status = models.SmallIntegerField(choices=status_choices, default=0)12     order_detail = models.OneToOneField("OrderDetail")  # 使訂單購買后支持 課程評價13 14     # order = models.ForeignKey("Order",blank=True,null=True)15 16     def __str__(self):17         return "%s:%s" % (self.account, self.course)18 19 20 class DegreeRegistrationForm(models.Model):21     """學位課程報名表"""22     enrolled_degree = models.OneToOneField("EnrolledDegreeCourse")23     current_company = models.CharField(max_length=64, )24     current_position = models.CharField(max_length=64, )25     current_salary = models.IntegerField()26     work_experience_choices = (27         (0, "應屆生"),28         (1, "1年"),29         (2, "2年"),30         (3, "3年"),31         (4, "4年"),32         (5, "5年"),33         (6, "6年"),34         (7, "7年"),35         (8, "8年"),36         (9, "9年"),37         (10, "10年"),38         (11, "超過10年"),39     )40     work_experience = models.IntegerField()41     open_module = models.BooleanField("是否開通第1模塊", default=True)42     stu_specified_mentor = models.CharField("學員自行指定的導師名", max_length=32, blank=True, null=True)43     study_plan_choices = ((0, "1-2小時/天"),44                           (1, "2-3小時/天"),45                           (2, "3-5小時/天"),46                           (3, "5小時+/天"),47                           )48     study_plan = models.SmallIntegerField(choices=study_plan_choices, default=1)49     why_take_this_course = models.TextField("報此課程原因", max_length=1024)50     why_choose_us = models.TextField("為何選路飛", max_length=1024)51     your_expectation = models.TextField("你的期待", max_length=1024)52     memo = models.CharField(max_length=255, blank=True, null=True)53 54     def __str__(self):55         return "%s" % self.enrolled_degree56 57 58 class EnrolledDegreeCourse(models.Model):59     """已報名的學位課程"""60     account = models.ForeignKey("Account")61     degree_course = models.ForeignKey("DegreeCourse")62     enrolled_date = models.DateTimeField(auto_now_add=True)63     valid_begin_date = models.DateField(verbose_name="有效期開始自", blank=True, null=True)  # 開通第一個模塊時,再添加課程有效期,2年64     valid_end_date = models.DateField(verbose_name="有效期結束至", blank=True, null=True)65     status_choices = (66         (0, '在學中'),67         (1, '休學中'),68         (2, '已畢業'),69         (3, '超時結業'),70         (4, '未開始'),71         # (3, '其它'),72     )73     study_status = models.SmallIntegerField(choices=status_choices, default=0)74     mentor = models.ForeignKey("Account", verbose_name="導師", related_name='my_students',75                                blank=True, null=True, limit_choices_to={'role': 1})76     mentor_fee_balance = models.PositiveIntegerField("導師費用余額", help_text="這個學員的導師費用,每有懲罰,需在此字段同時扣除")77     order_detail = models.OneToOneField("OrderDetail")  # 使訂單購買后支持填寫報名表78 79     def __str__(self):80         return "%s:%s" % (self.account, self.degree_course)81 82     class Meta:83         unique_together = ('account', 'degree_course')84 85 86 class Coupon(models.Model):87     """優惠券生成規則"""88     name = models.CharField(max_length=64, verbose_name="活動名稱")89     brief = models.TextField(blank=True, null=True, verbose_name="優惠券介紹")90     coupon_type_choices = ((0, '通用券'), (1, '滿減券'), (2, '折扣券'))91     coupon_type = models.SmallIntegerField(choices=coupon_type_choices, default=0, verbose_name="券類型")92 93     money_equivalent_value = models.IntegerField(verbose_name="等值貨幣")94     off_percent = models.PositiveSmallIntegerField("折扣百分比", help_text="只針對折扣券,例7.9折,寫79", blank=True, null=True)95     minimum_consume = models.PositiveIntegerField("最低消費", default=0, help_text="僅在滿減券時填寫此字段")96 97     content_type = models.ForeignKey(ContentType, blank=True, null=True)98     object_id = models.PositiveIntegerField("綁定課程", blank=True, null=True, help_text="可以把優惠券跟課程綁定")99     content_object = GenericForeignKey('content_type', 'object_id')
100     
101     quantity = models.PositiveIntegerField("數量(張)", default=1)
102     open_date = models.DateField("優惠券領取開始時間")
103     close_date = models.DateField("優惠券領取結束時間")
104     valid_begin_date = models.DateField(verbose_name="有效期開始時間", blank=True, null=True)
105     valid_end_date = models.DateField(verbose_name="有效結束時間", blank=True, null=True)
106     coupon_valid_days = models.PositiveIntegerField(verbose_name="優惠券有效期(天)", blank=True, null=True,
107                                                     help_text="自券被領時開始算起")
108     date = models.DateTimeField(auto_now_add=True)
109 
110     def __str__(self):
111         return "%s(%s)" % (self.get_coupon_type_display(), self.name)
112 
113     def save(self, *args, **kwargs):
114         if not self.coupon_valid_days or (self.valid_begin_date and self.valid_end_date):
115             if self.valid_begin_date and self.valid_end_date:
116                 if self.valid_end_date <= self.valid_begin_date:
117                     raise ValueError("valid_end_date 有效期結束日期必須晚于 valid_begin_date ")
118             if self.coupon_valid_days == 0:
119                 raise ValueError("coupon_valid_days 有效期不能為0")
120         if self.close_date < self.open_date:
121             raise ValueError("close_date 優惠券領取結束時間必須晚于 open_date優惠券領取開始時間 ")
122 
123         super(Coupon, self).save(*args, **kwargs)
124 
125 
126 class CouponRecord(models.Model):
127     """優惠券發放、消費紀錄"""
128     coupon = models.ForeignKey("Coupon")
129     #number = models.CharField(max_length=64, unique=True)
130     account = models.ForeignKey("Account", verbose_name="擁有者")
131     status_choices = ((0, '未使用'), (1, '已使用'), (2, '已過期'),)
132     status = models.SmallIntegerField(choices=status_choices, default=0)
133     get_time = models.DateTimeField(verbose_name="領取時間", help_text="用戶領取時間")
134     used_time = models.DateTimeField(blank=True, null=True, verbose_name="使用時間")
135     order = models.ForeignKey("Order", blank=True, null=True, verbose_name="關聯訂單")  # 一個訂單可以有多個優惠券
136 
137 
138 class Order(models.Model):
139     """訂單"""
140     payment_type_choices = ((0, '微信'), (1, '支付寶'), (2, '優惠碼'), (3, '貝里'))
141     payment_type = models.SmallIntegerField(choices=payment_type_choices)
142     payment_number = models.CharField(max_length=128, verbose_name="支付第3方訂單號", null=True, blank=True)
143     order_number = models.CharField(max_length=128, verbose_name="訂單號", unique=True)  # 考慮到訂單合并支付的問題
144     account = models.ForeignKey("Account")
145     actual_amount = models.FloatField(verbose_name="實付金額")
146 
147     status_choices = ((0, '交易成功'), (1, '待支付'), (2, '退費申請中'), (3, '已退費'), (4, '主動取消'), (5, '超時取消'))
148     status = models.SmallIntegerField(choices=status_choices, verbose_name="狀態")
149     date = models.DateTimeField(auto_now_add=True, verbose_name="訂單生成時間")
150     pay_time = models.DateTimeField(blank=True, null=True, verbose_name="付款時間")
151     cancel_time = models.DateTimeField(blank=True, null=True, verbose_name="訂單取消時間")
152 
153     def __str__(self):
154         return "%s" % self.order_number
155 
156 
157 class OrderDetail(models.Model):
158     """訂單詳情"""
159     order = models.ForeignKey("Order")
160 
161     content_type = models.ForeignKey(ContentType)  # 可關聯普通課程或學位
162     object_id = models.PositiveIntegerField()
163     content_object = GenericForeignKey('content_type', 'object_id')
164 
165     original_price = models.FloatField("課程原價")
166     price = models.FloatField("折后價格")
167     content = models.CharField(max_length=255, blank=True, null=True)  # ?
168     valid_period_display = models.CharField("有效期顯示", max_length=32)  # 在訂單頁顯示
169     valid_period = models.PositiveIntegerField("有效期(days)")  # 課程有效期
170     memo = models.CharField(max_length=255, blank=True, null=True)
171 
172     # def __str__(self):
173     #     return "%s - %s - %s" % (self.order, self.content_type, self.price)
174 
175     class Meta:
176         # unique_together = ("order", 'course')
177         unique_together = ("order", 'content_type', 'object_id')
178 
179 
180 class TransactionRecord(models.Model):
181     """貝里交易紀錄"""
182     account = models.ForeignKey("Account")
183     amount = models.IntegerField("金額")
184     balance = models.IntegerField("賬戶余額")
185     transaction_type_choices = ((0, '收入'), (1, '支出'), (2, '退款'), (3, "提現"))  # 2 為了處理 訂單過期未支付時,鎖定期貝里的回退
186     transaction_type = models.SmallIntegerField(choices=transaction_type_choices)
187 
188     content_type = models.ForeignKey(ContentType, blank=True, null=True)
189     object_id = models.PositiveIntegerField(blank=True, null=True, verbose_name="關聯對象")
190     content_object = GenericForeignKey('content_type', 'object_id')
191 
192     transaction_number = models.CharField(unique=True, verbose_name="流水號", max_length=128)
193     date = models.DateTimeField(auto_now_add=True)
194     memo = models.CharField(max_length=128, blank=True, null=True)
195 
196     def __str__(self):
197         return "%s" % self.transaction_number
購買課程相關的8張表
  1 class Homework(models.Model):2     chapter = models.ForeignKey("CourseChapter")3     title = models.CharField(max_length=128, verbose_name="作業題目")4     order = models.PositiveSmallIntegerField("作業順序", help_text="同一課程的每個作業之前的order值間隔1-2個數")5     homework_type_choices = ((0, '作業'), (1, '模塊通關考核'))6     homework_type = models.SmallIntegerField(choices=homework_type_choices, default=0)7     requirement = models.TextField(max_length=1024, verbose_name="作業需求")8     threshold = models.TextField(max_length=1024, verbose_name="踩分點")9     recommend_period = models.PositiveSmallIntegerField("推薦完成周期(天)", default=7)10     scholarship_value = models.PositiveSmallIntegerField("為該作業分配的獎學金(貝里)")11     note = models.TextField(blank=True, null=True)12     enabled = models.BooleanField(default=True, help_text="本作業如果后期不需要了,不想讓學員看到,可以設置為False")13 14     class Meta:15         unique_together = ("chapter", "title")16 17     def __str__(self):18         return "%s - %s" % (self.chapter, self.title)19 20 21 class Teacher(models.Model):22     """講師、導師表"""23     name = models.CharField(max_length=32)24     role_choices = ((0, '講師'), (1, '導師'))25     role = models.SmallIntegerField(choices=role_choices, default=0)26     title = models.CharField(max_length=64, verbose_name="職位、職稱")27     signature = models.CharField(max_length=255, help_text="導師簽名", blank=True, null=True)28     image = models.CharField(max_length=128)29     brief = models.TextField(max_length=1024)30 31     def __str__(self):32         return self.name33 34 35 # 普通課購買課程后,我的訂單中去評價。36 class CourseReview(models.Model):37     """課程評價"""38     enrolled_course = models.OneToOneField("EnrolledCourse")39     about_teacher = models.FloatField(default=0, verbose_name="講師講解是否清晰")40     about_video = models.FloatField(default=0, verbose_name="內容實用")41     about_course = models.FloatField(default=0, verbose_name="課程內容通俗易懂")42     review = models.TextField(max_length=1024, verbose_name="評價")43     disagree_number = models.IntegerField(default=0, verbose_name="踩")44     agree_number = models.IntegerField(default=0, verbose_name="贊同數")45     tags = models.ManyToManyField("Tags", blank=True, verbose_name="標簽")46     date = models.DateTimeField(auto_now_add=True, verbose_name="評價日期")47     is_recommend = models.BooleanField("熱評推薦", default=False)48     hide = models.BooleanField("不在前端頁面顯示此條評價", default=False)49 50     def __str__(self):51         return "%s-%s" % (self.enrolled_course.course, self.review)52 53 54 # 學位課購買課程后,我的訂單中去天報名表,然后就編程去學習(以后去評價)。55 class DegreeCourseReview(models.Model):56     """學位課程評價57     為了以后可以定制單獨的評價內容,所以不與普通課程的評價混在一起,單獨建表58     """59     enrolled_course = models.ForeignKey("EnrolledDegreeCourse")60     course = models.ForeignKey("Course", verbose_name="評價學位模塊", blank=True, null=True,61                                help_text="不填寫即代表評價整個學位課程", limit_choices_to={'course_type': 2})62     about_teacher = models.FloatField(default=0, verbose_name="講師講解是否清晰")63     about_video = models.FloatField(default=0, verbose_name="視頻質量")64     about_course = models.FloatField(default=0, verbose_name="課程")65     review = models.TextField(max_length=1024, verbose_name="評價")66     disagree_number = models.IntegerField(default=0, verbose_name="踩")67     agree_number = models.IntegerField(default=0, verbose_name="贊同數")68     tags = models.ManyToManyField("Tags", blank=True, verbose_name="標簽")69     date = models.DateTimeField(auto_now_add=True, verbose_name="評價日期")70     is_recommend = models.BooleanField("熱評推薦", default=False)71     hide = models.BooleanField("不在前端頁面顯示此條評價", default=False)72 73     def __str__(self):74         return "%s-%s" % (self.enrolled_course, self.review)75 76 77         78 # 購買學位課后,為每個學生每個模塊會立刻生成一條學習紀錄(未開通)79 class StudyRecord(models.Model):80     """學位課程的模塊學習進度81        報名學位課程后,每個模塊會立刻生成一條學習紀錄82     """83     enrolled_degree_course = models.ForeignKey("EnrolledDegreeCourse")84     course_module = models.ForeignKey("Course", verbose_name="學位模塊", limit_choices_to={'course_type': 2})85     open_date = models.DateField(blank=True, null=True, verbose_name="開通日期")86     end_date = models.DateField(blank=True, null=True, verbose_name="完成日期")87     status_choices = ((2, '在學'), (1, '未開通'), (0, '已完成'))88     status = models.SmallIntegerField(choices=status_choices, default=1)89 90     class Meta:91         unique_together = ('enrolled_degree_course', 'course_module')92 93     def __str__(self):94         return '%s-%s' % (self.enrolled_degree_course, self.course_module)95 96     def save(self, *args, **kwargs):97         if self.course_module.degree_course_id != self.enrolled_degree_course.degree_course_id:98             raise ValueError("學員要開通的模塊必須與其報名的學位課程一致!")99 
100         super(StudyRecord, self).save(*args, **kwargs)
101 
102 
103 # 為學生開通一個模塊
104 class CourseSchedule(models.Model):
105     """課程進度計劃表,針對學位課程,每開通一個模塊,就為這個學員生成這個模塊的推薦學習計劃表,后面的獎懲均按此表進行"""
106     study_record = models.ForeignKey("StudyRecord")
107     homework = models.ForeignKey("Homework")
108     recommend_date = models.DateField("推薦交作業日期")
109 
110     def __str__(self):
111         return "%s - %s - %s " % (self.study_record, self.homework, self.recommend_date)
112 
113     class Meta:
114         unique_together = ('study_record', 'homework')
115 
116 
117 # 學生交作業
118 class HomeworkRecord(models.Model):
119     """學員作業記錄及成績"""
120     homework = models.ForeignKey("Homework")
121     student = models.ForeignKey("EnrolledDegreeCourse", verbose_name="學生")
122     score_choices = (
123         (100, 'A+'),
124         (90, 'A'),
125         (85, 'B+'),
126         (80, 'B'),
127         (70, 'B-'),
128         (60, 'C+'),
129         (50, 'C'),
130         (40, 'C-'),
131         (-1, 'D'),
132         (0, 'N/A'),
133         (-100, 'COPY'),
134     )
135     score = models.SmallIntegerField(verbose_name="分數", choices=score_choices, null=True, blank=True)
136     mentor = models.ForeignKey("Account", related_name="my_stu_homework_record", limit_choices_to={'role': 1},
137                                verbose_name="導師")
138     mentor_comment = models.TextField(verbose_name="導師批注", blank=True, null=True)  # 導師
139     status_choice = (
140         (0, '待批改'),
141         (1, '已通過'),
142         (2, '不合格'),
143     )
144     status = models.SmallIntegerField(verbose_name='作業狀態', choices=status_choice, default=0)
145 
146     submit_num = models.SmallIntegerField(verbose_name='提交次數', default=0)
147     correct_date = models.DateTimeField('備注日期', blank=True, null=True)
148     note = models.TextField(blank=True, null=True)
149     date = models.DateTimeField("作業提交日期", auto_now_add=True)
150 
151     check_date = models.DateTimeField("批改日期", null=True, blank=True)
152 
153     update_time = models.DateTimeField(auto_now=True, verbose_name="提交日期")
154 
155     # homework_path = models.CharField(verbose_name='作業路徑', max_length=256,blank=True,null=True) 作業路徑可以動態拿到,沒必要存
156 
157     reward_choice = (
158         (0, '新提交'),
159         (1, '按時提交'),
160         (2, '未按時提交'),
161         (3, '成績已獎勵'),
162         (4, '成績已處罰'),
163         (5, '未作按時檢測'),
164     )
165     reward_status = models.SmallIntegerField(verbose_name='作業記錄獎懲狀態', default=0)
166 
167     def __str__(self):
168         return "%s %s" % (self.homework, self.student)
169 
170     class Meta:
171         unique_together = ("homework", "student")
172 
173 
174 # 導師跟進記錄
175 class StuFollowUpRecord(models.Model):
176     """學員跟進記錄"""
177     enrolled_degree_course = models.ForeignKey("EnrolledDegreeCourse", verbose_name="學生")
178     mentor = models.ForeignKey("Account", related_name='mentor', limit_choices_to={'role': 1}, verbose_name="導師")
179     followup_tool_choices = ((0, 'QQ'), (1, '微信'), (2, '電話'), (3, '系統通知'))
180     followup_tool = models.SmallIntegerField(choices=followup_tool_choices, default=1)
181     record = models.TextField(verbose_name="跟進記錄")
182     attachment_path = models.CharField(max_length=128, blank=True, null=True, verbose_name="附件路徑", help_text="跟進記錄的截圖等")
183     date = models.DateTimeField(auto_now_add=True)
184 
185     def __str__(self):
186         return "%s --%s --%s" % (self.enrolled_degree_course, self.record, self.date)
學位課優惠相關的表

?

轉載于:https://www.cnblogs.com/morgana/p/8496399.html

總結

以上是生活随笔為你收集整理的K12(在线学习的平台)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

中文字幕色综合网 | 波多野结衣电影一区二区 | 日韩美女av在线 | 日韩三级在线观看 | 天天操天天干天天爽 | 在线观看中文字幕2021 | 久久综合久久综合这里只有精品 | 91探花系列在线播放 | 2018好看的中文在线观看 | 久久亚洲影视 | 亚洲精品综合一二三区在线观看 | 狠狠黄 | 国产精品手机在线播放 | 综合网五月天 | 国产精品欧美一区二区三区不卡 | 国产视频2021 | 狠狠色丁香九九婷婷综合五月 | 欧美大片aaa | 中文字幕在线视频一区二区 | 免费视频在线观看网站 | 人人玩人人添人人澡超碰 | 制服丝袜在线 | 国产精品网址在线观看 | 人人玩人人添人人 | 日韩精品最新在线观看 | av日韩不卡 | 97视频在线观看成人 | 国产精品久久电影网 | 天天舔天天搞 | 欧美极品少妇xbxb性爽爽视频 | 在线国产专区 | 久久免费黄色 | 成人免费在线视频 | 久久精品视频国产 | 最近日本韩国中文字幕 | 久艹视频免费观看 | 波多野结衣精品在线 | 成人动图 | 国产亚洲婷婷免费 | 00av视频 | 国产高清免费在线观看 | 天堂在线视频中文网 | 欧美日韩视频精品 | 成人久久网 | 日韩色爱| 国产精品美女久久久免费 | 蜜臀精品久久久久久蜜臀 | 大胆欧美gogo免费视频一二区 | 99精品在线观看视频 | www.亚洲精品视频 | 色噜噜狠狠狠狠色综合久不 | 一本一本久久a久久精品综合 | 日本电影久久 | 久久久亚洲精华液 | 中文字幕免费高清在线 | 久久亚洲国产精品 | 欧美日韩国产一二三区 | 午夜精品久久久久久久久久久 | 日本三级在线观看中文字 | 国精产品999国精产品视频 | 国产精品久久久久永久免费 | 中文字幕在线观看第二页 | 亚洲精品国产精品国自产观看浪潮 | 五月婷婷中文网 | 黄色日本免费 | 久久精品96 | 青青河边草观看完整版高清 | 色狠狠久久av五月综合 | 久久久免费高清视频 | 色综合久久精品 | 911国产精品 | 激情影院在线观看 | 欧美精选一区二区三区 | 狠狠天天 | 91精品国产三级a在线观看 | 成年人视频在线观看免费 | 免费视频久久 | 美女黄濒 | 欧美日韩一区二区三区视频 | www免费黄色 | 日韩免费在线观看视频 | 久久精品精品电影网 | 久草视频免费看 | 日韩艹| 99精品色| 日韩免费在线观看 | 欧美精品亚洲精品 | 国产成人a v电影 | 日本婷婷色 | 亚洲乱码在线 | 天天射天| 国产精品久久久久婷婷二区次 | 在线观看视频亚洲 | 国产精品18久久久久白浆 | 国产精品久久久久久久久久免费看 | 精品久久久成人 | 日本在线视频一区二区三区 | 在线观看av国产 | 中文字幕久久精品一区 | 色婷婷天天干 | 国产成人三级在线播放 | 三级午夜片 | 国产免费一区二区三区网站免费 | 婷婷丁香五 | 精品99在线视频 | 久久久久久高潮国产精品视 | 色视频网站在线观看一=区 a视频免费在线观看 | 一区二区视频免费在线观看 | 国产精品 日韩精品 | 精品一区二区免费在线观看 | 久久国产精品一二三区 | 激情小说网站亚洲综合网 | 在线观看视频97 | 青草草在线 | 97超碰国产在线 | 欧美一区在线看 | 狠狠干天天色 | 久av在线 | 免费av观看 | 亚洲最大免费成人网 | 亚洲aⅴ免费在线观看 | 在线黄色av电影 | 国产精品一区二区果冻传媒 | 午夜精品999 | 日韩黄色中文字幕 | av网站在线观看免费 | 在线观看色网站 | 色欧美成人精品a∨在线观看 | 91在线色| 日韩电影一区二区三区在线观看 | 国产69精品久久久久久久久久 | 国产免费久久久久 | 欧美一区二区三区四区夜夜大片 | 青青草国产精品视频 | 亚洲成a人片在线www | 麻豆视频免费播放 | 久久久久久国产精品亚洲78 | 国产精品正在播放 | 欧美日韩a视频 | 日本三级大片 | 狠狠操狠狠操 | 草久久影院 | 日韩在线视频在线观看 | 久久视频这里只有精品 | 亚洲人成网站精品片在线观看 | 免费a视频在线 | 国产日韩中文字幕 | 又色又爽又激情的59视频 | 国产福利一区二区在线 | 国产黄色一级片 | 91麻豆看国产在线紧急地址 | 精品黄色片 | 久久久人人人 | 91精品婷婷国产综合久久蝌蚪 | 日本精品久久久久影院 | 在线免费中文字幕 | 很黄很污的视频网站 | 成人黄色在线电影 | 久久视频在线观看免费 | 日本性动态图 | 欧美国产精品久久久久久免费 | 国产成人久久精品一区二区三区 | 日韩在线三级 | 亚洲四虎 | 激情综合网色播五月 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国内精品久久久久影院一蜜桃 | 99精品免费久久久久久日本 | 亚洲国产精品电影 | 亚洲国产无 | 亚洲韩国一区二区三区 | 在线播放视频一区 | 免费网站v | 欧美日韩高清在线一区 | 久久综合久久综合久久综合 | 国产直播av | 国产精品久久久久久久久搜平片 | 正在播放国产一区二区 | 999久久久精品视频 日韩高清www | 夜夜操网站 | 精品国产一区二区三区av性色 | 国产欧美精品一区二区三区四区 | 亚洲精品国产精品国自 | 日本久久电影网 | 免费观看www小视频的软件 | 99在线精品免费视频九九视 | a√天堂中文在线 | 一级黄色av| 免费看片日韩 | 国产一区欧美日韩 | 最近中文字幕高清字幕免费mv | 久久亚洲免费 | 超碰com| 一区二区激情视频 | 中文字幕在线影视资源 | 高清不卡免费视频 | 日韩网站在线 | 国际精品久久久久 | 日韩av免费观看网站 | 91手机在线看片 | 伊人永久在线 | 日本久久综合网 | 中文字幕有码在线播放 | 中文字幕 国产精品 | 91久久黄色 | 欧美日韩裸体免费视频 | 午夜黄色一级片 | 日韩欧美一区二区在线 | 久久久www| avove黑丝 | 久草免费在线 | 日本三级久久 | 五月婷婷色丁香 | 成人h动漫在线看 | 中文字幕免费一区二区 | 国产精品成人国产乱 | 日韩网站在线观看 | 不卡精品 | 亚洲视频久久久 | 九七视频在线观看 | 欧美久久久一区二区三区 | 在线观看日韩视频 | 99精品国产99久久久久久97 | 精品国产精品一区二区夜夜嗨 | 91大神在线看 | 韩日三级在线 | 国内精品国产三级国产aⅴ久 | 综合天天网 | a级国产乱理论片在线观看 特级毛片在线观看 | 99爱国产精品 | 在线观看中文字幕av | 国产99免费| 黄色大片av | 国产黄在线免费观看 | 91九色丨porny丨丰满6 | 国产午夜免费视频 | 久久精品一区二区三 | 欧美成人在线免费观看 | 亚洲国产操 | 国产伦理一区二区 | 国产成人在线观看 | 国产精品福利午夜在线观看 | 久久久久色 | 国产日韩精品一区二区三区 | 国产一区二区在线免费播放 | 日韩精品久久一区二区三区 | 九九免费在线观看视频 | 一级黄色片在线免费观看 | 免费视频黄 | 中文字幕永久 | 亚洲一二三在线 | 久久久av电影 | 摸阴视频 | 国产69久久久欧美一级 | 黄色资源在线观看 | 欧美日韩视频网站 | 91亚洲精品乱码久久久久久蜜桃 | 免费观看性生活大片3 | 美女久久精品 | 在线日韩三级 | 亚洲午夜久久久久久久久 | 精品国产乱码一区二区三区在线 | 亚洲乱码精品久久久 | 国产一区二区在线免费视频 | 在线观看视频国产 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 成人免费 在线播放 | 免费成人在线网站 | 久久男人中文字幕资源站 | av网站在线免费观看 | 欧美一性一交一乱 | 国产91精品看黄网站在线观看动漫 | 在线观看视频中文字幕 | 人人狠狠综合久久亚洲婷 | 免费色网| 五月综合网站 | 在线亚洲高清视频 | 国产精品入口66mio女同 | 麻豆视传媒官网免费观看 | www.久久爱.cn | 99久久99久久精品国产片果冰 | 粉嫩aⅴ一区二区三区 | 亚色视频在线观看 | 亚洲精品高清一区二区三区四区 | 天天操天天怕 | 亚洲综合色婷婷 | 91香蕉视频污在线 | 久久久久久久影院 | 一区二区三区中文字幕在线 | 激情丁香久久 | 18国产精品福利片久久婷 | 999国内精品永久免费视频 | 天天操天天舔天天爽 | 久久国产91| 特级片免费看 | 91麻豆精品国产自产在线 | 国产在线视频不卡 | 天堂在线视频中文网 | 欧美精品久久久久久久久免 | 日韩美视频 | 在线观看日韩国产 | 国产一区在线免费观看视频 | 最新中文字幕在线资源 | 日韩av手机在线看 | 日韩精品免费在线视频 | 亚洲国产精彩中文乱码av | 九九精品视频在线观看 | 在线国产小视频 | jizzjizzjizz亚洲 | 国产一级电影免费观看 | 狠狠色丁婷婷日日 | 婷婷五天天在线视频 | 日韩精品一区不卡 | 在线免费观看av网站 | 99色国产 | 精品人妖videos欧美人妖 | 黄色软件大全网站 | 最新午夜电影 | 六月婷色 | 91传媒在线看 | 麻豆精品在线视频 | 中文字幕色婷婷在线视频 | 看av免费 | 操操操操网| 国产一级在线免费观看 | av在线电影播放 | 成年一级片 | 国产三级视频在线 | 97在线超碰 | 久草在线费播放视频 | 天天干天天操天天入 | 国产精品区在线观看 | 久久人人爽人人爽人人片av软件 | 精品美女久久久久 | 少妇高潮流白浆在线观看 | 国产四虎影院 | 免费看的毛片 | 日韩欧美99 | 97av影院| 久久久久久久久久国产精品 | 日韩 国产 | 欧美日产在线观看 | 日本爱爱片 | 日韩精品三区四区 | 免费视频黄 | 国产伦理久久精品久久久久_ | 国产专区视频 | av片中文字幕| 精品1区2区| 亚洲一区日韩 | 在线视频专区 | 综合av在线 | 91喷水| 伊人开心激情 | 国产亚洲精品久久19p | 国内精品在线观看视频 | 亚洲欧美日本一区二区三区 | 正在播放日韩 | 亚洲精品美女 | 亚洲成人免费 | 麻豆视频免费看 | 久久九九视频 | 久久超碰99 | 中文字幕免费一区二区 | 在线精品在线 | 九月婷婷色 | 国产在线一卡 | 成人97视频 | 最近2019中文免费高清视频观看www99 | 欧美亚洲一区二区在线 | 天堂网一区二区 | 国产专区在线视频 | www.亚洲精品视频 | 亚洲精品自拍视频在线观看 | 成人免费网站在线观看 | 日韩亚洲在线观看 | 日韩精品久久久久久 | 91精品黄色 | 亚洲手机av | 国产精品 中文在线 | 欧美精品生活片 | 在线观看国产中文字幕 | 四虎国产精品成人免费4hu | 久久久久激情电影 | 国产原创在线 | 99久久精品免费看国产一区二区三区 | 免费a v视频 | 国产高清在线看 | 日韩在线观看 | 久久成人高清视频 | 成人久久久久久久久 | 免费看黄的 | 久久男人中文字幕资源站 | 日韩欧美国产激情在线播放 | 国产色拍拍拍拍在线精品 | av经典在线 | 欧美性生活大片 | 免费看成人| 亚洲国产综合在线 | 最近更新好看的中文字幕 | www亚洲视频 | 5月丁香婷婷综合 | 超碰免费在线公开 | 国产视频手机在线 | 中文字幕av在线不卡 | 精一区二区 | 亚洲精品综合欧美二区变态 | 97色在线视频 | 欧美日韩精品免费观看视频 | 欧美男同视频网站 | 在线国产小视频 | 在线成人中文字幕 | 久久三级视频 | sm免费xx网站 | 园产精品久久久久久久7电影 | 偷拍区另类综合在线 | 狠狠干天天射 | av网址最新 | 激情欧美国产 | 狠狠插狠狠操 | 国产成人综| 国产免费美女 | 97在线视频免费观看 | 亚洲国产精品99久久久久久久久 | 中文字幕一区三区 | 在线观看免费国产小视频 | 四虎永久免费网站 | 欧美精品在线一区二区 | 97精品一区二区三区 | 久久国产手机看片 | 国模一二三区 | 日本中文字幕在线看 | 91伊人久久大香线蕉蜜芽人口 | 亚洲美女免费精品视频在线观看 | 久久精品久久99精品久久 | av网站在线观看播放 | 国产色综合天天综合网 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 婷婷国产在线观看 | 日韩久久精品一区二区 | 国内成人精品视频 | 欧美激精品 | 成人丝袜 | 国精产品999国精产品视频 | 国产黄色精品在线观看 | 天天狠狠 | 国产三级久久久 | www日| 日本公妇在线观看 | 免费男女羞羞的视频网站中文字幕 | 伊人导航 | 视频91在线 | 夜夜爱av | 久久久久久久久久久久99 | 福利av影院 | 手机看片1042 | 国产99久久久精品视频 | 天天天干天天射天天天操 | 日韩精品中文字幕在线播放 | 99产精品成人啪免费网站 | 色偷偷88888欧美精品久久久 | 亚洲精品欧美专区 | 在线观看成人小视频 | 香蕉看片 | 国产精品1区 | 91大神精品视频在线观看 | 99视频| 中文字幕av在线电影 | 日韩av片免费在线观看 | 国产精品一区二区麻豆 | 黄色在线网站噜噜噜 | 一区二区三区在线视频观看58 | 日韩精品一区二区三区在线播放 | 婷婷综合导航 | av电影免费在线看 | 丁香综合网 | 天天操偷偷干 | 亚洲精品乱码久久久久久 | 69精品视频在线观看 | 精品女同一区二区三区在线观看 | 91在线日韩| 精品视频久久 | 在线看片中文字幕 | 久久精品网站免费观看 | 91一区二区三区久久久久国产乱 | 91视频最新网址 | 国产伦精品一区二区三区免费 | 日韩精品一区二区三区免费观看 | 99热最新在线 | 中文字幕 婷婷 | 黄色小视频在线观看免费 | 精品久久久久久久久久久久久 | 国产无吗一区二区三区在线欢 | 草久在线观看视频 | 中文字幕在线乱 | 国产精品久久久久久久久久久不卡 | 五月综合激情婷婷 | 精品国产一区二区三区不卡 | 国产精品久久99综合免费观看尤物 | 中文字幕制服丝袜av久久 | 日韩精品三区四区 | 97超碰在线久草超碰在线观看 | 国内久久精品视频 | 天天操夜夜操天天射 | 精品久久久精品 | 成人黄色大片网站 | 欧美日韩精品网站 | 伊人激情综合 | 色综合久久久久综合 | 精品影院一区二区久久久 | 777奇米四色 | 人人超在线公开视频 | 欧美激情综合网 | 97成人在线观看 | 91激情视频在线观看 | 81国产精品久久久久久久久久 | 天天摸天天弄 | 中文在线字幕免费观 | 国产精品美女毛片真酒店 | 麻豆传媒在线视频 | 国产欧美日韩一区 | 亚洲精品国产自产拍在线观看 | 国产在线播放一区二区 | 精品在线你懂的 | 黄色动态图xx | 欧美一级性生活片 | 在线观看免费黄色 | 欧美日韩国产在线精品 | 国产成人精品久久久久 | 91视频久久久 | 黄色片软件网站 | 久热免费在线 | 亚洲欧美日韩在线一区二区 | 精品不卡av | 麻豆精品91 | 亚洲精品在线一区二区 | 91精品一| 亚洲综合激情 | 欧美精品乱码久久久久 | 日韩av成人在线 | 国产免费小视频 | www99久久 | 亚洲成人av电影在线 | 中文字幕免费高清在线 | 精品久久久久久综合 | 一区二区三区四区免费视频 | 成人国产精品久久久久久亚洲 | 亚洲免费公开视频 | 国产女人免费看a级丨片 | 亚洲成av人片在线观看 | 午夜视频亚洲 | 深夜免费网站 | 2023国产精品自产拍在线观看 | 久久国产综合视频 | 色鬼综合网 | 91成人精品一区在线播放 | 国产男女免费完整视频 | 国产一二三在线视频 | 日日日天天天 | 91在线入口 | 麻豆传媒视频观看 | 超碰在线亚洲 | 日韩精品一区二区三区免费观看 | 97在线观看 | 欧美看片 | 激情综合六月 | 欧美日韩xx| 久久国产电影院 | 天天摸日日摸人人看 | 欧美一进一出抽搐大尺度视频 | 国产精品视频你懂的 | 精品久久久久久综合 | 天堂在线视频免费观看 | 亚洲精品男人天堂 | 欧美久久久久久久久久 | 99国产一区二区三精品乱码 | 国产精品毛片一区二区三区 | 婷婷国产在线 | 日日夜夜草 | 精品国产网址 | 久久久人 | 黄网站app在线观看免费视频 | 久久草精品| 午夜av免费在线观看 | 午夜美女福利直播 | 99热99热 | 欧美激情奇米色 | 国产精品久久久久久久久久久不卡 | 国产精品久一 | 天天视频色版 | 97超视频 | 99免在线观看免费视频高清 | 国产精品成人自产拍在线观看 | 国产999精品久久久影片官网 | 91香蕉久久| 久久 在线 | 国产资源在线播放 | 成人免费网站视频 | 人人揉人人揉人人揉人人揉97 | 国产经典 欧美精品 | 免费看一级特黄a大片 | 久久av福利| 日韩超碰在线 | 最新国产视频 | 国产视频1| 国产精品一区二区久久久久 | 深爱婷婷 | 国产区在线看 | 色狠狠一区二区 | 韩国精品视频在线观看 | 免费毛片一区二区三区久久久 | 午夜免费福利视频 | 国产亚洲一区二区三区 | av888av.com | 国产精品视频资源 | 中文字幕在线观看第一页 | 奇米影视8888在线观看大全免费 | 91精品对白一区国产伦 | 国产最新视频在线观看 | 免费av网站在线看 | 欧美一区成人 | 狠狠干美女 | 天堂av在线网址 | 天天干天天做天天爱 | 久章草在线 | 999久久国精品免费观看网站 | av导航福利 | 天操夜夜操 | av中文字幕网址 | 日韩精品视频免费在线观看 | 欧美高清成人 | 日韩免费网站 | 免费在线播放黄色 | 色综合久久88色综合天天免费 | 久久久精品欧美一区二区免费 | 在线观看一级视频 | 麻豆传媒电影在线观看 | 欧美精品久 | 国产九色91 | 97电影院网| 成人黄色中文字幕 | 国产精品毛片完整版 | 在线视频 国产 日韩 | 成人小视频在线播放 | 美女在线观看网站 | 日韩视频区 | 国产资源在线免费观看 | 久久精品中文字幕一区二区三区 | 国产精品高清免费在线观看 | 国产精品久久久久久久av电影 | 中文在线 | 成人91在线 | 探花国产在线 | 毛片3| 99久久99久久精品国产片果冰 | 国产视频一区二区在线观看 | 国内精品久久久久影院男同志 | 亚洲综合一区二区精品导航 | 97国产 | 国产精品视频一二三 | www.一区二区三区 | 日韩天堂在线观看 | 天天天干夜夜夜操 | 国产精品ssss在线亚洲 | 91九色视频在线 | 国产高清精品在线 | 黄色网中文字幕 | 日韩欧美高清一区二区三区 | 亚洲免费精品一区二区 | 久久成人国产精品 | 日日干网 | 蜜臀久久99精品久久久无需会员 | 欧美日韩综合在线 | 97在线免费| 亚洲一区天堂 | 四虎在线视频 | 免费下载高清毛片 | 色综久久 | 69精品视频在线观看 | 久草a在线| 黄色国产在线观看 | 天堂网在线视频 | 天天操夜夜曰 | 国产成人在线观看 | 亚洲日本一区二区在线 | zzijzzij亚洲成熟少妇 | 成人动漫一区二区 | 最近更新好看的中文字幕 | 天天天综合网 | 精品一区二区在线播放 | 国产精品99久久久久久久久久久久 | 天天操夜操 | 天天婷婷 | 亚洲国产精品人久久电影 | 精品一区二区三区电影 | 人人干免费 | 日日干狠狠操 | 精品视频在线观看 | 日韩一二区在线 | 成人免费视频网站在线观看 | 狠狠久久综合 | 国产高清免费观看 | 96av视频 | 日本视频精品 | 国产精品爽爽久久久久久蜜臀 | www色片| 91精品视频在线 | 日韩特黄av | 激情婷婷丁香 | 在线播放 日韩专区 | 国产精品久久99精品毛片三a | 成人福利av | 黄在线免费看 | www,黄视频 | 美女久久一区 | 最新av电影网址 | 在线电影中文字幕 | 亚洲乱码国产乱码精品天美传媒 | 免费看黄电影 | 99精品黄色片免费大全 | 欧美人牲| 999色视频| 91视频大全 | 亚洲免费视频观看 | 亚洲欧美日韩一二三区 | 97天天干 | 精品国产一区二区久久 | 久久久久9999亚洲精品 | 国产一卡二卡四卡国 | www.看片网站 | 欧美日韩一区二区视频在线观看 | 日韩成人黄色av | 一级欧美日韩 | 久久不射电影网 | www.黄色 | 日韩av高清 | 久久大香线蕉app | 国产精品欧美久久久久久 | 精品国内 | 国产免费专区 | 91污视频在线观看 | 久久毛片网站 | 久久99在线| 午夜电影中文字幕 | av免费试看| 日本激情视频中文字幕 | 日韩综合在线观看 | 久久精彩 | 伊人五月天婷婷 | 国产成人久久久久 | 日韩av影视 | 激情深爱五月 | 亚洲高清激情 | 久久9999久久免费精品国产 | 久久人操 | 操一草 | 九月婷婷人人澡人人添人人爽 | 麻豆精品传媒视频 | 亚洲作爱视频 | 97超碰资源总站 | 五月婷网站 | 综合久久婷婷 | www99精品 | 日韩亚洲在线观看 | 国产免费黄色 | 久久久久 | 亚洲最快最全在线视频 | 日韩在线视频不卡 | 在线观看视频国产一区 | 亚洲精品www久久久久久 | 日韩精品网址 | 欧美性黄网官网 | 在线国产高清 | 一区二区精品视频 | 精品国产_亚洲人成在线 | 一区精品在线 | 久久天天操| 最近更新的中文字幕 | 亚洲婷久久 | 久热精品国产 | 九九精品视频在线观看 | 国产小视频你懂的 | 综合网成人 | 国产 在线 日韩 | 人人干干人人 | 在线看日韩 | 色婷婷av一区二 | 中文av在线天堂 | 欧美少妇xxx| 欧美日韩国产网站 | 成人在线免费视频观看 | 9免费视频 | 日日夜夜综合网 | 久久99国产精品自在自在app | 精品一区二区三区四区在线 | 亚洲最新视频在线播放 | 久久久精品一区二区三区 | 欧美日韩性 | 国产免费又黄又爽 | 精品国产诱惑 | 久久av高清 | 国产亚洲精品xxoo | 久久精品婷婷 | h视频在线看 | 亚洲 欧洲 国产 日本 综合 | 99热这里只有精品久久 | 播五月综合 | 欧美黄在线| 啪一啪在线| 亚洲伦理一区二区 | 日日骑 | 免费h视频 | www色 | 久久tv视频 | 免费看成人片 | 在线а√天堂中文官网 | 成人午夜精品福利免费 | 91传媒在线观看 | 人人舔人人爽 | 欧美做受高潮 | 五月婷婷网站 | 2018亚洲男人天堂 | 精品国产一区二区三区四 | 久久综合婷婷国产二区高清 | 国产精品毛片完整版 | av久久久 | 丁香色综合 | 精品日韩在线 | 69精品视频在线观看 | 国产免费亚洲高清 | 91伊人久久大香线蕉蜜芽人口 | 精品九九久久 | 日精品在线观看 | 亚洲精品乱码久久久久久蜜桃欧美 | 在线亚洲欧美视频 | 特级黄色一级 | 亚洲欧美国产精品 | 国产日产精品一区二区三区四区 | 天天色天天爱天天射综合 | 欧美日韩69 | 亚洲va韩国va欧美va精四季 | 成人黄色毛片视频 | 国产免费午夜 | 在线免费观看黄色av | 99福利片 | 亚洲精品黄 | 精品在线一区二区 | 亚洲精品高清在线观看 | 国产精品欧美久久 | www.久久99| 久久撸在线视频 | 亚洲狠狠操 | 蜜臀av免费一区二区三区 | 四虎在线免费观看 | 美女网站在线播放 | 亚洲国产经典视频 | 亚洲一二三区精品 | 高清av不卡| 久久国产精品系列 | 视频在线在亚洲 | 麻豆免费精品视频 | 激情综合一区 | 欧美色道| 欧美在线a视频 | www.天天色.com | 国产在线精品视频 | 激情综合五月婷婷 | 视频成人永久免费视频 | a v在线视频 | 青草视频在线播放 | 亚洲免费av在线 | 久久久免费精品国产一区二区 | 日日夜夜干 | 香蕉视频网站在线观看 | 一区二区中文字幕在线 | 欧美日韩高清在线观看 | 一本一本久久a久久精品综合小说 | freejavvideo日本免费 | 九九九九精品九九九九 | 日本公妇在线观看 | 91大神精品视频 | 黄色网址国产 | av成人亚洲| av免费网站观看 | 在线观看国产区 | 国产群p视频 | 超碰在线观看97 | 亚洲一区视频在线播放 | 毛片二区| 五月开心网 | 日韩国产在线观看 | 激情 婷婷 | 久久久久激情 | 国产一区在线播放 | 尤物97国产精品久久精品国产 | 日韩综合一区二区 | 精品国产自 | 日韩av免费观看网站 | 久久精品视频免费观看 | 9999精品| 成人资源在线播放 | 91丨九色丨高潮丰满 | 亚洲在线国产 | 欧美男男tv网站 | 亚洲国产天堂av | 97人人精品 | 国产精品一区二区在线免费观看 | 天天射色综合 | 激情综合五月天 | 亚洲精品字幕在线 | 天堂视频一区 | 波多野结衣在线观看视频 | 亚洲日本va中文字幕 | 国产一级做a | 日韩av男人的天堂 | 国产精品久久久久久一区二区 | 久久精品欧美 | 久久国产亚洲视频 | bayu135国产精品视频 | 精品免费一区 | 精品成人免费 | 亚洲另类久久 | 亚洲视频456 | 日韩国产精品久久久久久亚洲 | 美女网站色在线观看 | 亚洲国产字幕 | 亚洲黄色大片 | 国产不卡免费 | 国产精品久久久免费 | 久热av在线 | 中文字幕一区二区在线观看 | 美女国产免费 | 91热爆视频 | 日韩免费一二三区 | 免费视频你懂的 | 超碰在线免费福利 | 日韩日韩日韩日韩 | 欧美精品国产综合久久 | 91最新在线 | 91av在线视频播放 | 成人午夜电影免费在线观看 | 国产精品第2页 | 九色视频网址 | 九九九九九九精品 | 中文字幕在线观 | 日韩三级在线观看 | 一区二区精品在线 | 中文字幕韩在线第一页 | 久久综合狠狠综合 | 久久最新网址 | 欧美在线资源 | 在线视频亚洲 | 精品国产成人在线影院 | 国产女做a爱免费视频 | av高清在线 | 91精品麻豆| 欧美一级免费在线 | 精品在线观 | 午夜12点 | 国产精品久久久久久模特 | 久久 一区 | 在线观看中文字幕网站 | 免费看国产黄色 | 中文字幕专区高清在线观看 | 国产精品乱码久久久久 | 欧美一级免费 | 又黄又爽又刺激视频 | 黄色毛片在线 | av一区在线播放 | 久爱综合 | 青草视频免费观看 | av电影在线观看完整版一区二区 | 国产最新91 | 欧美成年网站 | 久久午夜精品视频 | 成 人 a v天堂 | 免费视频成人 | 免费看av片网站 | 欧美日韩一区久久 | 在线国产一区二区 | 国产丝袜高跟 | 国产婷婷精品 | 久久综合亚洲鲁鲁五月久久 | 久草在线免费色站 | 在线观看91精品视频 | 久久精品视频一 | 在线观看免费成人 | 中文字幕在线视频一区二区三区 | 成人黄色国产 | 午夜精品一区二区三区四区 | 久久国产精品99久久人人澡 | 国内精品久久久 | 亚洲天堂网站 | 国产精品一区二区三区电影 | 国产中年夫妇高潮精品视频 | 日本性久久 | 国产黄| 中文字幕在线免费观看 |