From 3cfd410a5ade5a34c662f4258fa6481d6f020070 Mon Sep 17 00:00:00 2001 From: jingganjiaoyu Date: Sun, 4 Aug 2024 14:54:26 +0800 Subject: [PATCH] opt some --- src/jiaowuxitong/class.go | 24 ++++++++---------------- src/jiaowuxitong/classUser.go | 22 ++++++++++++++++++++++ src/jiaowuxitong/classUser.js | 12 ++++++++++++ src/jiaowuxitong/common.go | 1 + src/jiaowuxitong/model/model.go | 8 +++++--- src/jiaowuxitong/portal.json | 12 ++++++++---- src/jiaowuxitong/userClass.go | 13 +++++++++++-- 7 files changed, 67 insertions(+), 25 deletions(-) create mode 100644 src/jiaowuxitong/classUser.go create mode 100644 src/jiaowuxitong/classUser.js diff --git a/src/jiaowuxitong/class.go b/src/jiaowuxitong/class.go index 446c8e1..27e868a 100644 --- a/src/jiaowuxitong/class.go +++ b/src/jiaowuxitong/class.go @@ -33,25 +33,17 @@ func init() { ice.TeamCtxCmd(Class{}) } type ClassType int const ( - ClassHouse ClassType = iota - ClassHotel - ClassStore - ClassPublic - ClassSchool - ClassOffice - ClassFactory - ClassHospital + ClassTerm ClassType = iota + ClassWeekly + ClassStep + ClassFree ) var ClassTypeList = map[ClassType]string{ - ClassHouse: "house", - ClassHotel: "hotel", - ClassStore: "store", - ClassPublic: "public", - ClassSchool: "school", - ClassOffice: "office", - ClassFactory: "factory", - ClassHospital: "hospital", + ClassTerm: "term", + ClassWeekly: "weekly", + ClassStep: "step", + ClassFree: "free", } func (s ClassType) String() string { return ClassTypeList[s] } diff --git a/src/jiaowuxitong/classUser.go b/src/jiaowuxitong/classUser.go new file mode 100644 index 0000000..8676794 --- /dev/null +++ b/src/jiaowuxitong/classUser.go @@ -0,0 +1,22 @@ +package jiaowuxitong + +import ( + "shylinux.com/x/ice" + + "shylinux.com/x/education/src/jiaowuxitong/model" +) + +type classUser struct { + portal Portal + userClass userClass + list string `name:"list class_uid uid auto" role:"void" help:"班级成员" icon:"https://img.icons8.com/officel/80/crowd.png"` +} + +func (s classUser) Init(m *ice.Message, arg ...string) { + s.portal.Show(m, model.ROLE, "creator,landlord") +} +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 new file mode 100644 index 0000000..378580f --- /dev/null +++ b/src/jiaowuxitong/classUser.js @@ -0,0 +1,12 @@ +Volcanos(chat.ONIMPORT, { + _init: function(can, msg) { if (msg.IsDetail()) { return msg.Dump(can) } + can.page.Append(can, can._output, msg.Table(function(value) { value._style = [value.user_class_role] + return can.onimport.itemcard(can, value, [ + {view: html.TITLE, list: [{text: value.user_name}, + {text: [can.user.transValue(can, value, "user_class_role"), "", aaa.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 6a1c5ee..654bcd3 100644 --- a/src/jiaowuxitong/common.go +++ b/src/jiaowuxitong/common.go @@ -37,5 +37,6 @@ 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 m } diff --git a/src/jiaowuxitong/model/model.go b/src/jiaowuxitong/model/model.go index 4e0f978..dc6cf47 100644 --- a/src/jiaowuxitong/model/model.go +++ b/src/jiaowuxitong/model/model.go @@ -5,6 +5,8 @@ import "shylinux.com/x/mysql-story/src/db" const ( UID = "uid" NAME = "name" + TYPE = "type" + ROLE = "role" GRADE = "grade" USER_UID = "user_uid" USER_CLASS_ROLE = "user_class_role" @@ -32,13 +34,13 @@ type Class struct { type School struct { db.ModelWithUID CityUID string `gorm:"type:char(32);index"` - Name string `gorm:"type:varchar(256);index"` + Name string `gorm:"type:varchar(256)"` Info string } type Homework struct { db.ModelWithUID - ClassUID string `gorm:"type:char(32);index"` - UserUID string `gorm:"type:char(32)"` + ClassUID string `gorm:"type:char(32);index:idx_class_user"` + UserUID string `gorm:"type:char(32);index:idx_class_user"` Content string } diff --git a/src/jiaowuxitong/portal.json b/src/jiaowuxitong/portal.json index 1d2c46a..5ff3315 100644 --- a/src/jiaowuxitong/portal.json +++ b/src/jiaowuxitong/portal.json @@ -7,10 +7,8 @@ "icons": { "homework": "https://img.icons8.com/officel/80/homework.png" }, - "style": { - "placeRemove": "danger" - }, "input": { + "My Class": "我的班级", "grade": "入学年份", "user_class_role": "用户角色", "class_uid": "班级", @@ -20,9 +18,15 @@ }, "value": { "class_type": { + "term": "学期制", + "weekly": "周期性", + "step": "阶段性", + "free": "自由式" }, "user_class_role": { - "teacher": "老师" + "teacher": "老师", + "student": "学生", + "parent": "家长" } } } \ No newline at end of file diff --git a/src/jiaowuxitong/userClass.go b/src/jiaowuxitong/userClass.go index 728768c..037ff51 100644 --- a/src/jiaowuxitong/userClass.go +++ b/src/jiaowuxitong/userClass.go @@ -12,16 +12,25 @@ type userClass struct { school school } +func (s userClass) User(m *ice.Message, arg ...string) { + s.Select(m, model.CLASS_UID, arg[0]).RenameAppend(model.ROLE, model.USER_CLASS_ROLE) + s.SelectJoinUser(m) + s.RewriteAppend(m) +} 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.SCHOOL_NAME, model.GRADE, model.CLASS_UID, model.CITY_UID, ) - if len(arg) == 1 { + if len(arg) == 0 { + if m.IsTech() { + s.Select(m) + } + } else 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], model.CLASS_UID, arg[1]) + s.SelectDetail(m, model.USER_UID, arg[0], s.Key(s.class, model.UID), arg[1]) } else { return }