models.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. from tortoise import fields
  2. from tortoise.models import Model
  3. from pydantic import BaseModel
  4. from datetime import datetime
  5. from tortoise import fields
  6. from tortoise.models import Model
  7. from pydantic import BaseModel
  8. from datetime import datetime
  9. class User(Model):
  10. id = fields.IntField(pk=True)
  11. username = fields.CharField(max_length=30, unique=True, description="帳號")
  12. password = fields.CharField(max_length=128, description="密碼")
  13. email = fields.CharField(max_length=128, description="信箱")
  14. points = fields.IntField(description="點數")
  15. is_superuser = fields.IntField(description="超級使用者")
  16. token = fields.CharField(max_length=200)
  17. is_active = fields.IntField(description="是否已認證")
  18. create_time = fields.DatetimeField(description="創建時間")
  19. class UserPydantic(BaseModel):
  20. id: int
  21. username: str
  22. password: str
  23. email: str
  24. points: int
  25. is_superuser: int
  26. token: str
  27. # position : str
  28. is_active: int
  29. class Config:
  30. orm_mode = True
  31. #學校
  32. class Schools(Model):
  33. id = fields.IntField(pk=True)
  34. name = fields.CharField(max_length=100, description="學校名稱")
  35. longitude = fields.CharField(max_length=100, description="經度")
  36. latitude = fields.CharField(max_length=100, description="緯度")
  37. address = fields.CharField(max_length=128,description="地址")
  38. update_time = fields.DatetimeField(description="更新時間")
  39. introduction = fields.TextField(description="簡介", null=True)
  40. email = fields.TextField(description="email", null=True)
  41. phone = fields.TextField(description="電話", null=True)
  42. create_user_id = fields.IntField(description="創建使用者ID", null=True)
  43. teachers = fields.TextField(description="老師", null=True)
  44. is_delete = fields.IntField(description="是否刪除")
  45. is_pass_proposal = fields.IntField(description="是否通過提案")
  46. principal_user_id = fields.IntField(description="負責人", null=True)
  47. def show_data(self):
  48. return {
  49. "location_id": self.id,
  50. "location_name": self.name,
  51. "Lng": self.longitude,
  52. "Lat": self.latitude,
  53. "address": self.address,
  54. "update_time":self.update_time,
  55. "school_introduction":self.introduction,
  56. "email":self.email,
  57. "phone":self.phone,
  58. "school_create_user_id" :self.create_user_id,
  59. "teachers_list" : self.teachers,
  60. "is_delete" : self.is_delete,
  61. "is_pass_proposal" : self.is_pass_proposal
  62. }
  63. class Group_name(Model):
  64. id = fields.IntField(pk=True)
  65. group_name = fields.CharField(max_length=45, description="學群名稱")
  66. describe = fields.TextField(description="學群介紹", null=True)
  67. class Class_name(Model):
  68. id = fields.IntField(pk=True)
  69. name = fields.CharField(max_length=100, description="課程名稱")
  70. school_id = fields.IntField(description="學校ID")
  71. category = fields.CharField(max_length=45, description="分類", null=True)
  72. introduction = fields.TextField(description="簡介", null=True)
  73. organizer = fields.CharField(max_length=200, description="主辦單位", null=True)
  74. cover_img = fields.CharField(max_length=255, description="封面圖片", null=True)
  75. group_id = fields.IntField(description="學群")
  76. group_sort = fields.CharField(max_length=45, description="學群細分")
  77. special_class_list_name = fields.CharField(max_length=45, description="特殊表格", null=True)
  78. recommend = fields.IntField(description="是否在首頁")
  79. is_inner = fields.IntField(description="是否是內課")
  80. is_check = fields.IntField(description="是否確認")
  81. create_user_id = fields.IntField(description="創建使用者ID", null=True)
  82. create_time = fields.DatetimeField(description="創建時間", null=True)
  83. is_delete = fields.IntField(description="是否刪除")
  84. is_record_point = fields.IntField(description="是否已經計算過點數", null=True)
  85. teachers_resume = fields.TextField(description="老師簡歷", null=True)
  86. encode = fields.CharField(max_length=100, description="課程編碼", null=True)
  87. syllabus = fields.TextField(description="老師課綱", null=True)
  88. def show_data(self):
  89. return {
  90. "class_name_id": self.id,
  91. "name": self.name,
  92. "category": self.category,
  93. "introduction": self.introduction,
  94. "organizer": self.organizer,
  95. "group_id": self.group_id,
  96. "cover_img": self.cover_img,
  97. "group_sort":self.group_sort,
  98. "recommend" : self.recommend,
  99. "is_inner" : self.is_inner,
  100. "is_check" :self.is_check,
  101. "special_class_list_name":self.special_class_list_name,
  102. "create_user_id" :self.create_user_id,
  103. "create_time" : self.create_time,
  104. "is_delete" : self.is_delete,
  105. "is_record_point" : self.is_record_point,
  106. "teachers_resume" : self.teachers_resume,
  107. "encode" : self.encode,
  108. "syllabus" :self.syllabus
  109. }
  110. class Class_list(Model):
  111. id = fields.IntField(pk=True)
  112. name_id = fields.IntField(description="課程名稱ID")
  113. event = fields.CharField(max_length=45, description="場次", null=True)
  114. start_time = fields.DatetimeField(description="開始時間", null=True)
  115. end_time = fields.DatetimeField(description="結束時間", null=True)
  116. contact = fields.CharField(max_length=255, description="聯絡方式", null=True)
  117. lecturer = fields.CharField(max_length=255, description="講師", null=True)
  118. location = fields.CharField(max_length=255, description="地點詳情", null=True)
  119. content = fields.TextField(description="內容", null=True)
  120. URL = fields.TextField(description="連結網址", null=True)
  121. people = fields.CharField(max_length=255, description="對象", null=True)
  122. fee_method = fields.CharField(max_length=255, description="收費方式", null=True)
  123. registration_way = fields.CharField(max_length=255, description="報名方式", null=True)
  124. remark = fields.TextField(description="備註", null=True)
  125. ATM_address = fields.TextField(description="匯款帳號", null=True)
  126. fee_payment = fields.CharField(max_length=45, description="收費方式", null=True)
  127. create_user_id = fields.IntField(description="創建使用者ID", null=True)
  128. event_create_time = fields.DatetimeField(description="創建時間", null=True)
  129. files = fields.TextField(description="附件", null=True)
  130. def show_data(self):
  131. return {
  132. "event_id": self.id,
  133. "name_id": self.name_id,
  134. "event": self.event,
  135. "start_time": self.start_time,
  136. "end_time": self.end_time,
  137. "location": self.location,
  138. "lecturer": self.lecturer,
  139. "contact": self.contact,
  140. "content": self.content,
  141. "URL": self.URL,
  142. "people": self.people,
  143. "fee_method": self.fee_method,
  144. "registration_way": self.registration_way,
  145. "remark": self.remark,
  146. "ATM_address":self.ATM_address,
  147. "fee_payment" :self.fee_payment,
  148. "create_user_id" :self.create_user_id,
  149. "event_create_time" : self.event_create_time,
  150. "files" : self.files
  151. }
  152. class Class_detail(Model):
  153. id = fields.IntField(pk=True)
  154. class_list_id = fields.IntField(description="課程場次ID")
  155. start_time = fields.DatetimeField(description="開始時間")
  156. end_time = fields.DatetimeField(description="結束時間")
  157. sessions = fields.IntField(description="堂數")
  158. content = fields.TextField(description="內容", null=True)
  159. hour = fields.IntField(description="時數")
  160. class Registration(Model):
  161. id = fields.IntField(pk=True)
  162. event_id = fields.IntField(description="課程ID")
  163. user_id = fields.IntField(description="使用者ID")
  164. reg_confirm = fields.IntField(description="報名確認(1:報名成功 0:單純報名)")
  165. is_del = fields.IntField(description="是否取消(1:yes ,0:no)")
  166. is_attend = fields.IntField(description="是否出席(1:yes ,0:no)")
  167. payment_status = fields.IntField(description="是否付款(1:yes ,0:no)")
  168. five_digits = fields.CharField(max_length=200, description="匯款末五碼",null=True)
  169. create_time = fields.DatetimeField(description="創建時間")
  170. class News(Model):
  171. id = fields.IntField(pk=True)
  172. title = fields.CharField(max_length=200, description="標題")
  173. category = fields.CharField(max_length=45, description="類別", null=True)
  174. create_time = fields.DatetimeField(description="發布時間")
  175. click_time = fields.IntField(description="點擊次數", null=True)
  176. content = fields.TextField(description="內容", null=True)
  177. files = fields.TextField(description="附加檔案", null=True)
  178. URL = fields.TextField(description="外部連結", null=True)
  179. tags = fields.TextField(description="標籤", null=True)
  180. cover_img = fields.CharField(max_length=255, description="封面圖片", null=True)
  181. class Favorite_course(Model):
  182. id = fields.IntField(pk=True)
  183. user_id = fields.IntField(description="使用者ID")
  184. class_name_id = fields.IntField(description="課程ID")
  185. time_stemp = fields.DatetimeField(description="時間")
  186. class Article_list(Model):
  187. id = fields.IntField(pk=True)
  188. title = fields.CharField(max_length=200, description="標題")
  189. school_id = fields.IntField(description="學校ID", null=True)
  190. group_id = fields.IntField(description="學群", null=True)
  191. group_sort = fields.CharField(max_length=45, description="學群細分", null=True)
  192. create_user_id = fields.IntField(description="創建使用者ID", null=True)
  193. create_time = fields.DatetimeField(description="創建時間", null=True)
  194. latest_update_user_id = fields.IntField(description="最新更新使用者ID", null=True)
  195. latest_update_time = fields.DatetimeField(description="最新更新時間", null=True)
  196. tags = fields.TextField(description="標籤", null=True)
  197. category = fields.CharField(max_length=45, description="類別", null=True)
  198. depiction = fields.TextField(description="文章描述", null=True)
  199. cover_img = fields.TextField( description="封面圖片", null=True)
  200. vedio_url = fields.TextField( description="影片連結", null=True)
  201. click_time = fields.IntField(description="點擊次數", null=True)
  202. content = fields.TextField(description="內容", null=True)
  203. is_del = fields.IntField(description="是否刪除")
  204. files = fields.TextField(description="附件", null=True)
  205. url = fields.TextField(description="文章連結", null=True)
  206. recommend = fields.IntField(description="是否在首頁")
  207. writer = fields.CharField(max_length=200, description="著作", null=True)
  208. publish = fields.CharField(max_length=200, description="出版社", null=True)
  209. publish_date = fields.DatetimeField(description="出版時間", null=True)
  210. language = fields.CharField(max_length=200, description="語言", null=True)
  211. buy_way = fields.TextField(description="購買方式", null=True)
  212. class Online_course(Model):
  213. id = fields.IntField(pk=True)
  214. title = fields.CharField(max_length=45, description="標題")
  215. category = fields.CharField(max_length=45, description="類別", null=True)
  216. create_time = fields.DatetimeField(description="發布時間")
  217. click_time = fields.IntField(description="點擊次數", null=True)
  218. content = fields.TextField(description="發布時間", null=True)
  219. video_url = fields.TextField(description="影片連結")
  220. group_id = fields.IntField(description="學群", null=True)
  221. cover_img = fields.TextField(description="封面圖片", null=True)
  222. org = fields.CharField(max_length=255, description="課程來源", null=True)
  223. def show_data(self):
  224. return {
  225. "id" : self.id,
  226. "title": self.title,
  227. "category": self.category,
  228. "create_time": self.create_time,
  229. "click_time": self.click_time,
  230. "content": self.content,
  231. "video_url": self.video_url,
  232. "group_id": self.group_id,
  233. "cover_img": self.cover_img,
  234. "org": self.org
  235. }
  236. class Guidance_group(Model):
  237. id = fields.IntField(pk=True)
  238. name = fields.CharField(max_length=125, description="協會(團體)名稱")
  239. contact_person = fields.CharField(max_length=125, description="聯絡人")
  240. contact_phone = fields.CharField(max_length=125, description="聯絡電話")
  241. line = fields.IntField(description="LINE (0:沒有、1:有)")
  242. address = fields.TextField(description="地址")
  243. email = fields.CharField(max_length=125, description="信箱")
  244. information = fields.TextField(description="開課資訊")
  245. request = fields.TextField(description="需求")
  246. schedule = fields.CharField(max_length=45, description="處理進度")
  247. result = fields.CharField(max_length=125, description="處理結果")
  248. person = fields.CharField(max_length=45, description="輔導人員")
  249. remark = fields.TextField(description="備註")
  250. create_time = fields.DatetimeField(description="創建時間")
  251. class User_information(Model):
  252. id = fields.IntField(pk=True)
  253. user_id = fields.IntField(description="使用者ID")
  254. name = fields.CharField(max_length=45, description="姓名", null=True)
  255. birthday = fields.DateField(description="生日", null=True)
  256. gender = fields.CharField(max_length=45, description="性別", null=True)
  257. phone = fields.CharField(max_length=45, description="電話", null=True)
  258. address = fields.TextField(description="地址", null=True)
  259. is_default = fields.IntField(description="是否為預設", null=True)
  260. position = fields.JSONField(max_length=200,description="登入身分", null=True)
  261. identity = fields.TextField(description="身分別", null=True)
  262. class Class_date(Model):
  263. id = fields.IntField(pk=True)
  264. class_list_id = fields.IntField(description="場次ID")
  265. registration_start = fields.DatetimeField(description="報名時間開始", null=True)
  266. registration_end = fields.DatetimeField(description="報名時間結束", null=True)
  267. number_limit = fields.IntField(description="名額", null=True)
  268. amount_left = fields.IntField(description="剩餘名額", null=True)
  269. number_minimum = fields.IntField(description="最低人數", null=True)
  270. class Attend_record(Model):
  271. id = fields.IntField(pk=True)
  272. class_name_id = fields.IntField(description="課程ID")
  273. class_event_id = fields.IntField(description="場次ID")
  274. class_detail_id = fields.IntField(description="課堂ID")
  275. user_id = fields.IntField(description="使用者ID")
  276. is_attend = fields.IntField(description="是否已出席(1:是、0:否)")
  277. class One_day_class(Model):
  278. id = fields.IntField(pk=True)
  279. name_id = fields.IntField(description="課程名稱")
  280. teacher = fields.CharField(max_length=100, description="老師", null=True)
  281. contact = fields.CharField(max_length=100, description="聯絡方式", null=True)
  282. start_time = fields.DatetimeField(description="開始時間", null=True)
  283. end_time = fields.DatetimeField(description="結束時間", null=True)
  284. reg_deadline = fields.DatetimeField(description="報名結束時間", null=True)
  285. remark = fields.TextField(description="備註", null=True)
  286. people = fields.CharField(max_length=255, description="對象", null=True)
  287. way = fields.CharField(max_length=45, description="上課方式", null=True)
  288. fee_method = fields.TextField(description="收費方式", null=True)
  289. material = fields.TextField(description="材料", null=True)
  290. tools = fields.TextField(description="材料", null=True)
  291. number_limit = fields.TextField(description="人數限制", null=True)
  292. def show_data(self):
  293. return {
  294. "id" : self.id,
  295. "name_id": self.name_id,
  296. "teacher": self.teacher,
  297. "contact": self.contact,
  298. "start_time": self.start_time,
  299. "end_time": self.end_time,
  300. "reg_deadline": self.reg_deadline,
  301. "remark": self.remark,
  302. "people": self.people,
  303. "way": self.way,
  304. "material": self.material,
  305. "tools": self.tools,
  306. "number_limit": self.number_limit
  307. }
  308. class User_resume(Model):
  309. id = fields.IntField(pk=True)
  310. user_id = fields.IntField(description="使用者編號", null=True)
  311. teacher_name = fields.CharField(max_length=45,description="老師名字")
  312. work_type = fields.CharField(max_length=45, description="工作性質", null=True)
  313. experience = fields.CharField(max_length=100, description="教學經驗", null=True)
  314. expertise = fields.TextField(description="專業工藝技能", null=True)
  315. license = fields.TextField(description="相關證照", null=True)
  316. media = fields.TextField(description="社群媒體", null=True)
  317. imgs = fields.TextField(description="作品集", null=True)
  318. introduction = fields.TextField(description="自我介紹", null=True)
  319. def show_data(self):
  320. return {
  321. "id" : self.id,
  322. "user_id": self.user_id,
  323. "teacher_name": self.teacher_name,
  324. "work_type": self.work_type,
  325. "experience": self.experience,
  326. "expertise": self.expertise,
  327. "license": self.license,
  328. "media": self.media,
  329. "imgs": self.imgs,
  330. "introduction": self.introduction
  331. }
  332. class Tgc_pic(Model):
  333. id = fields.IntField(pk=True)
  334. pic_name = fields.TextField(description="照片名稱", null=True)
  335. pic_url = fields.TextField(description="照片連結", null=True)
  336. def show_data(self):
  337. return {
  338. "id" : self.id,
  339. "pic_name": self.pic_name,
  340. "pic_url": self.pic_url
  341. }
  342. class Tgc_report(Model):
  343. id = fields.IntField(pk=True)
  344. title = fields.CharField(max_length=100,description="標題", null=True)
  345. create_time = fields.DatetimeField(description="創建時間", null=True)
  346. url = fields.TextField(description="連結", null=True)
  347. def show_data(self):
  348. return {
  349. "id" : self.id,
  350. "title": self.title,
  351. "create_time": self.create_time,
  352. "url": self.url
  353. }
  354. class Outter_class_list(Model):
  355. id = fields.IntField(pk=True)
  356. name_id = fields.IntField(description="課程名稱")
  357. start_time = fields.DatetimeField(description="開始時間", null=True)
  358. end_time = fields.DatetimeField(description="結束時間", null=True)
  359. imgs = fields.TextField(description="圖片", null=True)
  360. price = fields.CharField(max_length=45, description="價錢", null=True)
  361. URL = fields.TextField(description="連結", null=True)
  362. def show_data(self):
  363. return {
  364. "id" : self.id,
  365. "name_id": self.name_id,
  366. "start_time": self.start_time,
  367. "end_time": self.end_time,
  368. "imgs": self.imgs,
  369. "price": self.price,
  370. "URL": self.URL
  371. }
  372. class User_point(Model):
  373. user_id = fields.IntField(pk=True)
  374. hours = fields.FloatField(description="累積時數")
  375. points = fields.IntField(description="累積點數")
  376. def show_data(self):
  377. return {
  378. "user_id" : self.user_id,
  379. "hours": self.hours,
  380. "points": self.points
  381. }
  382. class Point_exchange_record(Model):
  383. id = fields.IntField(pk=True)
  384. user_id = fields.IntField(description="使用者")
  385. point_exchange = fields.IntField(description="兌換點數")
  386. time_stemp = fields.DatetimeField(description="兌換時間", null=True)
  387. def show_data(self):
  388. return {
  389. "id" : self.id,
  390. "user_id" : self.user_id,
  391. "points_exchange": self.point_exchange,
  392. "time_stemp": self.time_stemp
  393. }
  394. class Proposal(Model):
  395. id = fields.IntField(pk=True)
  396. class_name = fields.CharField(max_length=100, description="課程名稱")
  397. school_id = fields.IntField(description="學校ID")
  398. category = fields.CharField(max_length=45, description="分類", null=True)
  399. introduction = fields.TextField(description="簡介", null=True)
  400. organizer = fields.CharField(max_length=200, description="主辦單位", null=True)
  401. cover_img = fields.TextField(description="封面圖片", null=True)
  402. create_time = fields.DatetimeField(description="創建時間", null=True)
  403. fee_method = fields.TextField(description="價錢", null=True)
  404. number_limit = fields.IntField(description="人數限制", null=True)
  405. number_minimum = fields.IntField(description="最低人數", null=True)
  406. people = fields.TextField(description="對象", null=True)
  407. files = fields.TextField(description="PPT", null=True)
  408. def show_data(self):
  409. return {
  410. "proposal_id": self.id,
  411. "class_name": self.class_name,
  412. "school_id": self.school_id,
  413. "category": self.category,
  414. "introduction": self.introduction,
  415. "cover_img": self.cover_img,
  416. "organizer":self.organizer,
  417. "number_minimum" : self.number_minimum,
  418. "fee_method" : self.fee_method,
  419. "number_limit" :self.number_limit,
  420. "people":self.people,
  421. "files" :self.files,
  422. "create_time" : self.create_time
  423. }