package models import "time" // OaDailyReport OA工作日报 yz_backend_oa_daily_report // // 一人一天一条:user_id 存 yz_system_tenant_user.uid(不是 JWT 的 identity_id), // 由 (tid, user_id, report_date, is_deleted) 唯一键保证。 // 草稿 status=0,提交后 status=1 并锁定(需撤销提交退回草稿后才能修改);删除为软删除。 // 每次撤销提交 / 撤销后重新提交都会在 yz_backend_oa_daily_report_history 留下内容快照。 // // IsDeleted 同时承担两个职责:0=未删除;删除时写入记录 ID 作为删除批次标记, // 这样唯一键在「删掉后同一天重新填写」时不会与历史软删记录冲突。 type OaDailyReport struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` Tid uint64 `orm:"column(tid)" json:"tid"` UserID uint64 `orm:"column(user_id)" json:"user_id"` UserName string `orm:"column(user_name);size(50);default()" json:"user_name"` OrgID uint64 `orm:"column(org_id);default(0)" json:"org_id"` OrgName string `orm:"column(org_name);size(100);default()" json:"org_name"` ReportDate string `orm:"column(report_date);type(date)" json:"report_date"` TodayDone string `orm:"column(today_done);type(text);null" json:"today_done"` TomorrowPlan string `orm:"column(tomorrow_plan);type(text);null" json:"tomorrow_plan"` Issues string `orm:"column(issues);type(text);null" json:"issues"` // Attachments 附件JSON数组:[{"id":1,"url":"","name":"","size":0}] Attachments string `orm:"column(attachments);type(text);null" json:"attachments"` Status int8 `orm:"column(status);default(1)" json:"status"` // 0草稿 1已提交 SubmitTime *time.Time `orm:"column(submit_time);type(datetime);null" json:"submit_time"` IsDeleted uint64 `orm:"column(is_deleted);default(0)" json:"is_deleted"` CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"` UpdateTime *time.Time `orm:"column(update_time);auto_now;type(datetime);null" json:"update_time"` DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"` } func (m *OaDailyReport) TableName() string { return "yz_backend_oa_daily_report" } // OaDailyReportHistory OA工作日报修改痕迹 yz_backend_oa_daily_report_history // // 已提交日报被撤销提交(action=1)时写入本次提交的内容快照; // 撤销后重新提交(action=2)时写入新版本内容快照,保证「改了有据可查」。 // 痕迹只增不改,随日报一起逻辑上归档,不做软删除。 type OaDailyReportHistory struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` Tid uint64 `orm:"column(tid)" json:"tid"` ReportID uint64 `orm:"column(report_id)" json:"report_id"` UserID uint64 `orm:"column(user_id)" json:"user_id"` UserName string `orm:"column(user_name);size(50);default()" json:"user_name"` ReportDate string `orm:"column(report_date);type(date)" json:"report_date"` Action int8 `orm:"column(action);default(1)" json:"action"` // 1撤销提交 2重新提交 TodayDone string `orm:"column(today_done);type(text);null" json:"today_done"` TomorrowPlan string `orm:"column(tomorrow_plan);type(text);null" json:"tomorrow_plan"` Issues string `orm:"column(issues);type(text);null" json:"issues"` Attachments string `orm:"column(attachments);type(text);null" json:"attachments"` SubmitTime *time.Time `orm:"column(submit_time);type(datetime);null" json:"submit_time"` CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"` } func (m *OaDailyReportHistory) TableName() string { return "yz_backend_oa_daily_report_history" } // OaDailyReportComment OA工作日报评论 yz_backend_oa_daily_report_comment // // ReplyToID 指向同表评论ID,实现两级回复;0 表示直接评论日报。 // 删除为软删除(is_deleted=1)。 type OaDailyReportComment struct { ID uint64 `orm:"column(id);pk;auto" json:"id"` Tid uint64 `orm:"column(tid)" json:"tid"` ReportID uint64 `orm:"column(report_id)" json:"report_id"` UserID uint64 `orm:"column(user_id)" json:"user_id"` UserName string `orm:"column(user_name);size(50);default()" json:"user_name"` Content string `orm:"column(content);size(1000)" json:"content"` ReplyToID uint64 `orm:"column(reply_to_id);default(0)" json:"reply_to_id"` ReplyToName string `orm:"column(reply_to_name);size(50);default()" json:"reply_to_name"` IsDeleted int8 `orm:"column(is_deleted);default(0)" json:"is_deleted"` CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"` UpdateTime *time.Time `orm:"column(update_time);auto_now;type(datetime);null" json:"update_time"` DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"` } func (m *OaDailyReportComment) TableName() string { return "yz_backend_oa_daily_report_comment" }