from tortoise import fields from tortoise.models import Model from pydantic import BaseModel from datetime import datetime from tortoise import fields from tortoise.models import Model from pydantic import BaseModel from datetime import datetime class User(Model): id = fields.IntField(pk=True) username = fields.CharField(max_length=30, unique=True, description="帳號") password = fields.CharField(max_length=128, description="密碼") email = fields.CharField(max_length=128, description="信箱") points = fields.IntField(description="點數") is_superuser = fields.IntField(description="超級使用者") token = fields.CharField(max_length=200) is_active = fields.IntField(description="是否已認證") class UserPydantic(BaseModel): id: int username: str password: str email: str points: int is_superuser: int token: str # position : str is_active: int class Config: orm_mode = True #學校 class Schools(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=45, description="學校名稱") longitude = fields.CharField(max_length=100, description="經度") latitude = fields.CharField(max_length=100, description="緯度") address = fields.CharField(max_length=128,description="地址") update_time = fields.DatetimeField(description="更新時間") introduction = fields.TextField(description="簡介", null=True) email = fields.TextField(description="email", null=True) phone = fields.TextField(description="電話", null=True) create_user_id = fields.IntField(description="創建使用者ID", null=True) def show_data(self): return { "location_id": self.id, "location_name": self.name, "Lng": self.longitude, "Lat": self.latitude, "address": self.address, "update_time":self.update_time, "school_introduction":self.introduction, "email":self.email, "phone":self.phone, "create_user_id" :self.create_user_id } class Group_name(Model): id = fields.IntField(pk=True) group_name = fields.CharField(max_length=45, description="學群名稱") class Class_name(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=45, description="課程名稱") school_id = fields.IntField(description="學校ID") category = fields.CharField(max_length=45, description="分類") introduction = fields.TextField(description="簡介", null=True) organizer = fields.CharField(max_length=45, description="主辦單位", null=True) cover_img = fields.CharField(max_length=255, description="封面圖片", null=True) group_id = fields.IntField(description="學群") group_sort = fields.CharField(max_length=45, description="學群細分") special_class_list_name = fields.CharField(max_length=45, description="特殊表格", null=True) recommend = fields.IntField(description="是否在首頁") is_inner = fields.IntField(description="是否是內課") is_check = fields.IntField(description="是否確認") create_user_id = fields.IntField(description="創建使用者ID", null=True) def show_data(self): return { "class_name_id": self.id, "name": self.name, "category": self.category, "introduction": self.introduction, "organizer": self.organizer, "group_id": self.group_id, "cover_img": self.cover_img, "group_sort":self.group_sort, "recommend" : self.recommend, "is_inner" : self.is_inner, "is_check" :self.is_check, "special_class_list_name":self.special_class_list_name, "create_user_id" :self.create_user_id } class Class_list(Model): id = fields.IntField(pk=True) name_id = fields.IntField(description="課程名稱ID") event = fields.CharField(max_length=45, description="場次", null=True) start_time = fields.DatetimeField(description="開始時間", null=True) end_time = fields.DatetimeField(description="結束時間", null=True) contact = fields.CharField(max_length=255, description="聯絡方式", null=True) lecturer = fields.CharField(max_length=255, description="講師", null=True) location = fields.CharField(max_length=255, description="地點詳情", null=True) content = fields.TextField(description="內容", null=True) URL = fields.TextField(description="連結網址", null=True) people = fields.CharField(max_length=255, description="對象", null=True) fee_method = fields.CharField(max_length=255, description="收費方式", null=True) registration_way = fields.CharField(max_length=255, description="報名方式", null=True) remark = fields.TextField(description="備註", null=True) ATM_address = fields.TextField(description="匯款帳號", null=True) create_user_id = fields.IntField(description="創建使用者ID", null=True) def show_data(self): return { "event_id": self.id, "name_id": self.name_id, "event": self.event, "start_time": self.start_time, "end_time": self.end_time, "location": self.location, "lecturer": self.lecturer, "contact": self.contact, "content": self.content, "URL": self.URL, "people": self.people, "fee_method": self.fee_method, "registration_way": self.registration_way, "remark": self.remark, "ATM_address":self.ATM_address, "create_user_id" :self.create_user_id } class Class_detail(Model): id = fields.IntField(pk=True) class_list_id = fields.IntField(description="課程場次ID") start_time = fields.DatetimeField(description="開始時間") end_time = fields.DatetimeField(description="結束時間") sessions = fields.IntField(description="堂數") content = fields.TextField(description="內容", null=True) class Registration(Model): id = fields.IntField(pk=True) event_id = fields.IntField(description="課程ID") user_id = fields.IntField(description="使用者ID") reg_confirm = fields.IntField(description="報名確認(1:報名成功 0:單純報名)") is_del = fields.IntField(description="是否取消(1:yes ,0:no)") create_time = fields.DatetimeField(description="創建時間") class News(Model): id = fields.IntField(pk=True) title = fields.CharField(max_length=200, description="標題") category = fields.CharField(max_length=45, description="類別", null=True) create_time = fields.DatetimeField(description="發布時間") click_time = fields.IntField(description="點擊次數", null=True) content = fields.TextField(description="內容", null=True) files = fields.TextField(description="附加檔案", null=True) URL = fields.TextField(description="外部連結", null=True) tags = fields.TextField(description="標籤", null=True) cover_img = fields.CharField(max_length=255, description="封面圖片", null=True) class Favorite_course(Model): id = fields.IntField(pk=True) user_id = fields.IntField(description="使用者ID") class_name_id = fields.IntField(description="課程ID") time_stemp = fields.DatetimeField(description="時間") class Article_list(Model): id = fields.IntField(pk=True) title = fields.CharField(max_length=45, description="標題") school_id = fields.IntField(description="學校ID", null=True) group_id = fields.IntField(description="學群", null=True) group_sort = fields.CharField(max_length=45, description="學群細分", null=True) create_user_id = fields.IntField(description="創建使用者ID", null=True) create_time = fields.DatetimeField(description="創建時間", null=True) latest_update_user_id = fields.IntField(description="最新更新使用者ID", null=True) latest_update_time = fields.DatetimeField(description="最新更新時間", null=True) tags = fields.TextField(description="標籤", null=True) category = fields.CharField(max_length=45, description="類別", null=True) depiction = fields.TextField(description="文章描述", null=True) cover_img = fields.TextField( description="封面圖片", null=True) vedio_url = fields.TextField( description="影片連結", null=True) click_time = fields.IntField(description="點擊次數", null=True) content = fields.TextField(description="內容", null=True) is_del = fields.IntField(description="是否刪除") files = fields.TextField(description="附件", null=True) url = fields.TextField(description="文章連結", null=True) recommend = fields.IntField(description="是否在首頁") class Online_course(Model): id = fields.IntField(pk=True) title = fields.CharField(max_length=45, description="標題") category = fields.CharField(max_length=45, description="類別", null=True) create_time = fields.DatetimeField(description="發布時間") click_time = fields.IntField(description="點擊次數", null=True) content = fields.TextField(description="發布時間", null=True) video_url = fields.TextField(description="影片連結") group_id = fields.IntField(description="學群", null=True) cover_img = fields.TextField(description="封面圖片", null=True) def show_data(self): return { "id" : self.id, "title": self.title, "category": self.category, "create_time": self.create_time, "click_time": self.click_time, "content": self.content, "video_url": self.video_url, "group_id": self.group_id, "cover_img": self.cover_img } class Guidance_group(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=125, description="協會(團體)名稱") contact_person = fields.CharField(max_length=125, description="聯絡人") contact_phone = fields.CharField(max_length=125, description="聯絡電話") line = fields.IntField(description="LINE (0:沒有、1:有)") address = fields.TextField(description="地址") email = fields.CharField(max_length=125, description="信箱") information = fields.TextField(description="開課資訊") request = fields.TextField(description="需求") schedule = fields.CharField(max_length=45, description="處理進度") result = fields.CharField(max_length=125, description="處理結果") person = fields.CharField(max_length=45, description="輔導人員") remark = fields.TextField(description="備註") class User_information(Model): id = fields.IntField(pk=True) user_id = fields.IntField(description="使用者ID") name = fields.CharField(max_length=45, description="姓名") birthday = fields.DateField(description="生日") gender = fields.CharField(max_length=45, description="性別") phone = fields.CharField(max_length=45, description="電話") address = fields.TextField(description="地址") is_default = fields.IntField(description="是否為預設") position = fields.JSONField(max_length=200,description="登入身分") class Class_date(Model): id = fields.IntField(pk=True) class_list_id = fields.IntField(description="場次ID") registration_start = fields.DatetimeField(description="報名時間開始", null=True) registration_end = fields.DatetimeField(description="報名時間結束", null=True) number_limit = fields.IntField(description="名額", null=True) amount_left = fields.IntField(description="剩餘名額", null=True) class Attend_record(Model): id = fields.IntField(pk=True) class_detail_id = fields.IntField(description="課堂ID") user_id = fields.IntField(description="使用者ID") is_attend = fields.IntField(description="是否已出席(1:是、0:否)") class One_day_class(Model): id = fields.IntField(pk=True) name_id = fields.IntField(description="課程名稱") teacher = fields.CharField(max_length=100, description="老師", null=True) contact = fields.CharField(max_length=100, description="聯絡方式", null=True) start_time = fields.DatetimeField(description="開始時間", null=True) end_time = fields.DatetimeField(description="結束時間", null=True) reg_deadline = fields.DatetimeField(description="報名結束時間", null=True) remark = fields.TextField(description="備註", null=True) people = fields.CharField(max_length=255, description="對象", null=True) way = fields.CharField(max_length=45, description="上課方式", null=True) fee_method = fields.TextField(description="收費方式", null=True) material = fields.TextField(description="材料", null=True) tools = fields.TextField(description="材料", null=True) number_limit = fields.TextField(description="人數限制", null=True) def show_data(self): return { "id" : self.id, "name_id": self.name_id, "teacher": self.teacher, "contact": self.contact, "start_time": self.start_time, "end_time": self.end_time, "reg_deadline": self.reg_deadline, "remark": self.remark, "people": self.people, "way": self.way, "material": self.material, "tools": self.tools, "number_limit": self.number_limit } class User_resume(Model): id = fields.IntField(pk=True) user_id = fields.IntField(description="使用者編號") teacher_name = fields.CharField(max_length=45,description="老師名字") work_type = fields.CharField(max_length=45, description="工作性質", null=True) experience = fields.CharField(max_length=100, description="教學經驗", null=True) expertise = fields.TextField(description="專業工藝技能", null=True) license = fields.TextField(description="相關證照", null=True) media = fields.TextField(description="社群媒體", null=True) imgs = fields.TextField(description="作品集", null=True) introduction = fields.TextField(description="自我介紹", null=True) def show_data(self): return { "id" : self.id, "user_id": self.user_id, "teacher_name": self.teacher_name, "work_type": self.work_type, "experience": self.experience, "expertise": self.expertise, "license": self.license, "media": self.media, "imgs": self.imgs, "introduction": self.introduction } class Tgc_pic(Model): id = fields.IntField(pk=True) pic_name = fields.TextField(description="照片名稱", null=True) pic_url = fields.TextField(description="照片連結", null=True) def show_data(self): return { "id" : self.id, "pic_name": self.pic_name, "pic_url": self.pic_url } class Tgc_report(Model): id = fields.IntField(pk=True) title = fields.CharField(max_length=100,description="標題", null=True) create_time = fields.DatetimeField(description="創建時間", null=True) url = fields.TextField(description="連結", null=True) def show_data(self): return { "id" : self.id, "title": self.title, "create_time": self.create_time, "url": self.url } class Outter_class_list(Model): id = fields.IntField(pk=True) name_id = fields.IntField(description="課程名稱") start_time = fields.DatetimeField(description="開始時間", null=True) end_time = fields.DatetimeField(description="結束時間", null=True) imgs = fields.TextField(description="圖片", null=True) price = fields.CharField(max_length=45, description="價錢", null=True) URL = fields.TextField(description="連結", null=True) def show_data(self): return { "id" : self.id, "name_id": self.name_id, "start_time": self.start_time, "end_time": self.end_time, "imgs": self.imgs, "price": self.price, "URL": self.URL }