From 251f90e3c034117914226cec4ebdd483082d19e9 Mon Sep 17 00:00:00 2001 From: shy Date: Mon, 12 Aug 2024 20:17:30 +0800 Subject: [PATCH] add some --- src/jiaowuxitong/class.go | 2 +- src/jiaowuxitong/classUser.go | 14 -------------- src/jiaowuxitong/classUser.js | 13 ------------- src/jiaowuxitong/common.go | 26 +++++++++++++++++++++----- src/jiaowuxitong/homework.go | 9 ++++++--- src/jiaowuxitong/homework.js | 12 +++++------- src/jiaowuxitong/model/model.go | 14 ++++++++------ src/jiaowuxitong/portal.go | 2 +- src/jiaowuxitong/portal.json | 16 ++++++++-------- src/jiaowuxitong/portal.shy | 6 +----- src/jiaowuxitong/userClass.go | 8 ++++---- 11 files changed, 55 insertions(+), 67 deletions(-) delete mode 100644 src/jiaowuxitong/classUser.go delete mode 100644 src/jiaowuxitong/classUser.js diff --git a/src/jiaowuxitong/class.go b/src/jiaowuxitong/class.go index 64f2d1d..0dabb91 100644 --- a/src/jiaowuxitong/class.go +++ b/src/jiaowuxitong/class.go @@ -13,7 +13,7 @@ func (s class) Inputs(m *ice.Message, arg ...string) { switch arg[0] { case model.GRADE: y := kit.Int(kit.Split(m.Time(), "-")[0]) - for i := 0; i < 10; i++ { + for i := 0; i < 20; i++ { m.Push(arg[0], kit.Format("%d级", y)) y-- } diff --git a/src/jiaowuxitong/classUser.go b/src/jiaowuxitong/classUser.go deleted file mode 100644 index 57044f2..0000000 --- a/src/jiaowuxitong/classUser.go +++ /dev/null @@ -1,14 +0,0 @@ -package jiaowuxitong - -import "shylinux.com/x/ice" - -type classUser struct { - Tables - userClass userClass -} - -func (s classUser) List(m *ice.Message, arg ...string) { - m.Cmdy(s.userClass, s.userClass.User, arg).Display("") -} - -func init() { ice.TeamCtxCmd(classUser{}) } diff --git a/src/jiaowuxitong/classUser.js b/src/jiaowuxitong/classUser.js deleted file mode 100644 index a2246dd..0000000 --- a/src/jiaowuxitong/classUser.js +++ /dev/null @@ -1,13 +0,0 @@ -Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { var USER_CLASS_ROLE = "user_class_role" - if (msg.IsDetail()) { can.onexport.share_title(can, msg, USER_CLASS_ROLE); return msg.Show(can) } - can.onimport.itemcards(can, msg, function(value) { value._style = [value[USER_CLASS_ROLE]] - return [ - {view: html.TITLE, list: [{text: value.user_name}, - {text: [can.user.transValue(can, value, USER_CLASS_ROLE), "", [aaa.ROLE, value[USER_CLASS_ROLE]]]}, - ]}, - {view: html.STATUS, list: [{text: value.uid.slice(0, 6)}, {text: can.base.TimeTrim(value.created_at)}]}, - ] - }) - }, -}) diff --git a/src/jiaowuxitong/common.go b/src/jiaowuxitong/common.go index f7c60c4..47a2ce6 100644 --- a/src/jiaowuxitong/common.go +++ b/src/jiaowuxitong/common.go @@ -8,10 +8,6 @@ import ( "shylinux.com/x/education/src/jiaowuxitong/model" ) -type Tables struct { - gonganxitong.Tables - list string `name:"list class_uid uid auto" role:"void"` -} type Table struct { gonganxitong.Table list string `name:"list class_uid uid auto" role:"void"` @@ -41,6 +37,26 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { kit.If(key == model.USER_CLASS_ROLE, func() { value = UserClassRole(kit.Int(value)).String() }) return value }) - s.Table.RewriteAppend(m) + return s.Table.RewriteAppend(m) +} +func (s Table) checkRole(m *ice.Message, arg ...UserClassRole) bool { + kit.If(len(arg) == 0, func() { arg = append(arg, UserClassTeacher) }) + role := UserClassRole(kit.Int(m.Cmd(userClass{}, s.Select, m.OptionSimple(model.CLASS_UID, model.USER_UID)).Append(model.ROLE))) + for _, v := range append(arg, UserClassCreator) { + if role == v { + return true + } + } + return !m.WarnNotRight(true, role.String()) +} +func (s Table) recordEvent(m *ice.Message, info string, arg ...string) *ice.Message { + s.Table.RecordEvent(m, m.Option(model.CLASS_UID), info, kit.Select(m.Option(model.UID), arg, 0)) return m } + +type Tables struct { + Table + portal string `data:"true"` +} + +func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {} diff --git a/src/jiaowuxitong/homework.go b/src/jiaowuxitong/homework.go index 947c8e9..e53e1ca 100644 --- a/src/jiaowuxitong/homework.go +++ b/src/jiaowuxitong/homework.go @@ -12,14 +12,17 @@ type homework struct { class class userClass userClass portal string `data:"true"` - create string `name:"create content*" role:"void"` + create string `name:"create title* content*" role:"void"` } func (s homework) Create(m *ice.Message, arg ...string) { - s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.USER_UID, model.CLASS_UID))...) + if s.checkRole(m) { + s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.CLASS_UID, model.USER_UID))...) + s.recordEvent(m, m.Trans("create homework ", "创建家庭作业 ")+m.Option(model.TITLE), m.Result()) + } } func (s homework) List(m *ice.Message, arg ...string) { - s.TablesWithRole(m, arg, s, s.userClass, s.class, model.CONTENT).Display("") + s.TablesWithRole(m, arg, s.userClass, s.class, s, model.TITLE, model.CONTENT).Display("") } func init() { ice.TeamCtxCmd(homework{}) } diff --git a/src/jiaowuxitong/homework.js b/src/jiaowuxitong/homework.js index ae5c39f..e031241 100644 --- a/src/jiaowuxitong/homework.js +++ b/src/jiaowuxitong/homework.js @@ -1,14 +1,12 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg) { - if (msg.IsDetail()) { var value = msg.TableDetail(); msg.Option("_share_content", value.content) - msg.Option("_share_title", can.base.trimPrefix(value.created_at.split(" ")[0], can.base.Time(null, "%y-"))) - return msg.Show(can) - } + if (msg.IsDetail()) { var value = msg.TableDetail(); msg.Option("_share_title", value.title), msg.Option("_share_content", value.content) } can.onimport.itemcards(can, msg, function(value) { return [ - {view: html.TITLE, list: [{text: value.user_name}, - {text: [can.user.transValue(can, value, "user_class_role"), "", aaa.ROLE]}, + {view: html.TITLE, list: [{text: value.title}]}, + {view: html.STATUS, list: [ + {text: value.uid.slice(0, 6)}, {text: can.base.TimeTrim(value.created_at)}, + {text: value.user_name}, {text: [can.user.transValue(can, value, "user_class_role"), "", [aaa.ROLE, can.onimport.roleStyle(can, value, "user_class_role")]]}, ]}, - {view: html.STATUS, list: [{text: value.uid.slice(0, 6)}, {text: can.base.TimeTrim(value.created_at)},]}, {view: html.OUTPUT, list: [{text: value.content}]}, ] }) }, diff --git a/src/jiaowuxitong/model/model.go b/src/jiaowuxitong/model/model.go index a72cc65..a177f27 100644 --- a/src/jiaowuxitong/model/model.go +++ b/src/jiaowuxitong/model/model.go @@ -7,7 +7,7 @@ const ( NAME = "name" TYPE = "type" ROLE = "role" - GRADE = "grade" + TITLE = "title" CONTENT = "content" USER_UID = "user_uid" USER_CLASS_ROLE = "user_class_role" @@ -17,6 +17,7 @@ const ( SCHOOL_UID = "school_uid" SCHOOL_NAME = "school_name" CITY_UID = "city_uid" + GRADE = "grade" ) type UserClass struct { @@ -27,21 +28,22 @@ type UserClass struct { } type Class struct { db.ModelWithUID - SchoolUID string `gorm:"type:char(32)"` + SchoolUID string `gorm:"type:char(32);index"` Grade string `gorm:"type:char(32)"` - Name string `gorm:"type:varchar(256)"` + Name string `gorm:"type:char(64)"` Type uint8 } type School struct { db.ModelWithUID - CityUID string `gorm:"type:char(32);index"` - Name string `gorm:"type:varchar(256)"` + CityUID string `gorm:"type:char(32);index:idx_city"` + Name string `gorm:"type:char(64);index:idx_city"` Info string } type Homework struct { db.ModelWithUID - ClassUID string `gorm:"type:char(32)"` + ClassUID string `gorm:"type:char(32);index"` UserUID string `gorm:"type:char(32)"` + Title string `gorm:"type:char(64)"` Content string } diff --git a/src/jiaowuxitong/portal.go b/src/jiaowuxitong/portal.go index ff1a6fa..8bf5df1 100644 --- a/src/jiaowuxitong/portal.go +++ b/src/jiaowuxitong/portal.go @@ -6,7 +6,7 @@ type Portal struct { gonganxitong.Portal name string `data:"教务系统"` list string `name:"list class_uid index uid auto" role:"void"` - placeCreate string `name:"placeCreate city_name* school_name* grade*:select name*" role:"void"` + placeCreate string `name:"placeCreate city_name* school_name* grade*:select class_name*" role:"void"` } func init() { diff --git a/src/jiaowuxitong/portal.json b/src/jiaowuxitong/portal.json index 9179826..4572f93 100644 --- a/src/jiaowuxitong/portal.json +++ b/src/jiaowuxitong/portal.json @@ -1,23 +1,19 @@ { - "service": "系统服务", "portal": "教务系统", "placeCreate": "创建班级", "placeRemove": "删除班级", - "classUser": "班级成员", + "member": "班级成员", "homework": "家庭作业", "icons": { - "service": "https://img.icons8.com/officel/80/activity-grid.png", - "classUser": "https://img.icons8.com/officel/80/crowd.png", "homework": "https://img.icons8.com/officel/80/homework.png" }, "input": { "My Class": "我的班级", - "grade": "入学年份", "user_class_role": "用户角色", - "class_uid": "班级", "class_name": "班级名称", "class_type": "班级类型", - "school_name": "学校名称" + "school_name": "学校名称", + "grade": "入学年份" }, "value": { "user_class_role": { @@ -25,7 +21,11 @@ "visitor": "访客", "teacher": "老师", "student": "学生", - "parent": "家长" + "parent": "家长", + "style": { + "creator": "danger", + "teacher": "danger" + } }, "class_type": { "term": "学期制", diff --git a/src/jiaowuxitong/portal.shy b/src/jiaowuxitong/portal.shy index e5761b0..117a88b 100644 --- a/src/jiaowuxitong/portal.shy +++ b/src/jiaowuxitong/portal.shy @@ -1,7 +1,3 @@ chapter "教务系统" -field web.chat.wx.access field web.code.mysql.client -field web.code.mysql.query args `mysql jiaowuxitong` -field web.code.db.database -field web.code.db.driver -field web.code.db.models \ No newline at end of file +field web.code.mysql.query args `mysql jiaowuxitong` \ No newline at end of file diff --git a/src/jiaowuxitong/userClass.go b/src/jiaowuxitong/userClass.go index ac5b9f9..448add7 100644 --- a/src/jiaowuxitong/userClass.go +++ b/src/jiaowuxitong/userClass.go @@ -13,10 +13,11 @@ type userClass struct { } func (s userClass) User(m *ice.Message, arg ...string) { + s.FieldsWithCreatedAT(m, s, model.USER_UID, model.ROLE) if len(arg) == 1 { s.Select(m, model.CLASS_UID, arg[0]) } else if len(arg) == 2 { - s.Select(m, model.CLASS_UID, arg[0], model.UID, arg[1]) + s.SelectDetail(m, model.CLASS_UID, arg[0], model.UID, arg[1]) } else { return } @@ -27,13 +28,12 @@ func (s userClass) User(m *ice.Message, arg ...string) { func (s userClass) List(m *ice.Message, arg ...string) { s.Tables(m, s.class, s.school).FieldsWithCreatedAT(m, s, model.CLASS_NAME, model.CLASS_TYPE, model.USER_CLASS_ROLE, - model.CITY_UID, model.SCHOOL_NAME, model.GRADE, - model.CLASS_UID, + model.CITY_UID, model.SCHOOL_NAME, model.GRADE, model.CLASS_UID, ) if len(arg) == 1 { s.Select(m, model.USER_UID, arg[0]) } else if len(arg) == 2 { - s.SelectDetail(m, model.USER_UID, arg[0], s.Key(s.class, model.UID), arg[1]) + s.SelectDetail(m, model.USER_UID, arg[0], s.Key(s, model.CLASS_UID), arg[1]) } else { return }