From a75fa32db0f84db17a397dc52bac127e97f8fcf7 Mon Sep 17 00:00:00 2001 From: jingganjiaoyu Date: Sat, 3 Aug 2024 09:19:49 +0800 Subject: [PATCH] opt some --- src/gonganxitong/apply.go | 2 +- src/gonganxitong/common.go | 6 +- src/gonganxitong/model/model.go | 9 +-- src/gonganxitong/order.go | 1 - src/gonganxitong/place.go | 15 +---- src/gonganxitong/portal.go | 44 ++++++++------ src/gonganxitong/portal.js | 4 +- src/gonganxitong/portal.shy | 4 +- src/gonganxitong/qrcode.go | 10 +--- src/gonganxitong/userPlace.go | 16 +---- .../web.team.gonganxitong.portal/hash.json | 59 +++++++++++++++---- 11 files changed, 92 insertions(+), 78 deletions(-) diff --git a/src/gonganxitong/apply.go b/src/gonganxitong/apply.go index f8e685a..420d156 100644 --- a/src/gonganxitong/apply.go +++ b/src/gonganxitong/apply.go @@ -100,7 +100,7 @@ func (s apply) List(m *ice.Message, arg ...string) { } else { s.Table.Select(m.FieldsSetDetail(), s.Key(s, model.UID), arg[1]) if ApplyStatus(kit.Int(m.Append(model.APPLY_STATUS))) == ApplySubmit { - m.EchoQRCode(cmdurl(m, arg[0], m.Prefix("order"), arg[1])) + m.EchoQRCode(portal{}.Link(m, arg[0], m.Prefix("order"), arg[1])) } } m.Table(func(value ice.Maps) { diff --git a/src/gonganxitong/common.go b/src/gonganxitong/common.go index 86fda2f..3df912c 100644 --- a/src/gonganxitong/common.go +++ b/src/gonganxitong/common.go @@ -43,11 +43,7 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { } func (s Table) SendTemplate(m *ice.Message, user_uid, title string) { if !m.IsErr() { - m.Cmd(user{}, user{}.SendTemplate, user_uid, cmdurl(m, m.Option(model.PLACE_UID), m.PrefixKey(), m.Option(model.UID)), + m.Cmd(user{}, user{}.SendTemplate, user_uid, portal{}.Link(m, m.Option(model.PLACE_UID), m.PrefixKey(), m.Option(model.UID)), title, m.Option(model.PLACE_NAME), kit.Cut(m.Option(model.UID), 6)) } } -func cmdurl(m *ice.Message, arg ...string) string { - return m.MergePodCmd("", m.Prefix(web.PORTAL)) + "?debug=true" + - "#" + kit.Join([]string{arg[0], kit.Select(m.PrefixKey(), arg, 1), kit.Select("", arg, 2)}, ":") -} diff --git a/src/gonganxitong/model/model.go b/src/gonganxitong/model/model.go index f2d9017..273b784 100644 --- a/src/gonganxitong/model/model.go +++ b/src/gonganxitong/model/model.go @@ -52,7 +52,7 @@ type User struct { type UserPlace struct { db.ModelWithUID UserUID string `gorm:"type:char(32);index"` - PlaceUID string `gorm:"type:char(32)"` + PlaceUID string `gorm:"type:char(32);index"` Role uint8 BeginTime db.Time EndTime db.Time @@ -66,8 +66,9 @@ type Place struct { } type Street struct { db.ModelWithUID - CityUID string `gorm:"type:char(32)"` + CityUID string `gorm:"type:char(32);index"` Name string `gorm:"type:char(32);index"` + Info string } type City struct { db.ModelWithUID @@ -85,8 +86,8 @@ type Event struct { } type Apply struct { db.ModelWithUID - UserUID string `gorm:"type:char(32);index"` - PlaceUID string `gorm:"type:char(32)"` + PlaceUID string `gorm:"type:char(32);index"` + UserUID string `gorm:"type:char(32)"` Status uint8 Role uint8 BeginTime db.Time diff --git a/src/gonganxitong/order.go b/src/gonganxitong/order.go index 0af0d3d..865f949 100644 --- a/src/gonganxitong/order.go +++ b/src/gonganxitong/order.go @@ -69,7 +69,6 @@ func (s order) List(m *ice.Message, arg ...string) { m.PushButton() } }) - m.Info("what %v", m.FormatsMeta(nil)) s.RewriteAppend(m).Display("").DisplayCSS("") } diff --git a/src/gonganxitong/place.go b/src/gonganxitong/place.go index 90d4b3f..ccacad4 100644 --- a/src/gonganxitong/place.go +++ b/src/gonganxitong/place.go @@ -2,30 +2,17 @@ package gonganxitong import ( "shylinux.com/x/ice" - "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/community/src/gonganxitong/model" ) type place struct { Table - user user - city city - street street + user user } func (s place) Inputs(m *ice.Message, arg ...string) { switch arg[0] { - case model.CITY_NAME: - if m.Option(ctx.ACTION) == "placeCreate" { - break - } - m.Cmdy(s.city, s.city.Select).CutTo(model.NAME, arg[0]) - case model.STREET_NAME: - if m.Option(ctx.ACTION) == "placeCreate" { - break - } - m.Cmdy(s.street, s.street.Select).CutTo(model.NAME, arg[0]) case model.PLACE_TYPE: for k, v := range PlaceTypeList { m.Push(arg[0], k).Push(model.NAME, v) diff --git a/src/gonganxitong/portal.go b/src/gonganxitong/portal.go index 8e0be44..6cb39e2 100644 --- a/src/gonganxitong/portal.go +++ b/src/gonganxitong/portal.go @@ -36,16 +36,16 @@ func (s portal) List(m *ice.Message, arg ...string) { return } if len(arg) == 0 { - m.Cmdy(s.userPlace, m.Option(model.USER_UID)).Action(s.PlaceCreate, s.ScanQRCode).PushAction(s.PlaceRemove) + m.Cmdy(s.userPlace, m.Option(model.USER_UID)).PushAction(s.PlaceRemove).Action(s.PlaceCreate, s.ScanQRCode) kit.If(!m.IsErr() && m.Length() == 0, func() { m.EchoInfoButton(m.Trans("Please Create Your Place", "请添加场所"), s.PlaceCreate, s.ScanQRCode) }) - } else if len(arg) == 1 { - s.Hash.List(m, arg[1:]...).SortInt(mdb.ORDER) } else if len(arg) == 2 { msg := m.Cmd(s.place, s.place.Select, model.UID, arg[0]) m.Option(model.PLACE_NAME, msg.Append(model.NAME)) m.Cmdy(ctx.COMMAND, arg[1]).Push(ctx.ARGS, arg[0]) + } else if len(arg) == 1 { + s.Hash.List(m, arg[1:]...).SortInt(mdb.ORDER) } else { m.FieldsSetDetail().Cmdy(arg[1], mdb.SELECT, model.UID, arg[2]).PushAction().Action() } @@ -53,19 +53,22 @@ func (s portal) List(m *ice.Message, arg ...string) { } func (s portal) PlaceCreate(m *ice.Message, arg ...string) { defer m.ToastProcess()() - s.city.FindOrCreateByName(m, arg...) - s.street.FindOrCreateByName(m, arg...) + if s.city.FindOrCreateByName(m, arg...); m.IsErr() { + return + } + if s.street.FindOrCreateByName(m, arg...); m.IsErr() { + return + } arg = kit.TransArgKeys(arg, model.PLACE_TYPE, model.TYPE) if m.Cmdy(s.place, s.place.Create, arg[2:]).IsErr() { return } - args := kit.Simple(model.USER_UID, m.Option(model.USER_UID), model.PLACE_UID, m.Result(), model.ROLE, UserPlaceCreator) - m.Cmdy(s.userPlace, s.userPlace.Create, args) - m.ProcessRefresh() + args := kit.Simple(m.OptionSimple(model.USER_UID), model.PLACE_UID, m.Result(), model.ROLE, UserPlaceCreator) + m.Cmdy(s.userPlace, s.userPlace.Create, args).ProcessRefresh() } func (s portal) PlaceRemove(m *ice.Message, arg ...string) { defer m.ToastProcess()() - args := kit.Simple(model.USER_UID, m.Option(model.USER_UID), model.PLACE_UID, m.Option(model.PLACE_UID), model.ROLE, m.Option(model.USER_PLACE_ROLE)) + args := kit.Simple(m.OptionSimple(model.USER_UID, model.PLACE_UID), model.ROLE, m.Option(model.USER_PLACE_ROLE)) msg := m.Cmd(s.userPlace, s.userPlace.Select, args) if m.WarnNotFound(msg.Length() == 0, "place") { return @@ -93,15 +96,6 @@ func (s portal) ScanQRCode(m *ice.Message, arg ...string) { func init() { ice.TeamCtxCmd(portal{}) } -type Portal struct { - portal - export string `data:"true"` - short string `data:"index"` - field string `data:"time,name,icons,index,order,enable,type,role"` -} - -func init() { ice.TeamCtxCmd(Portal{}) } - func (s portal) Show(m *ice.Message, arg ...string) { m.GoSleep("30ms", func() { cmd := m.GetCommand() @@ -109,3 +103,17 @@ func (s portal) Show(m *ice.Message, arg ...string) { m.Cmd(s, s.Create, mdb.NAME, cmd.Help, mdb.ICONS, icon, ctx.INDEX, m.PrefixKey(), arg) }) } +func (s portal) Link(m *ice.Message, arg ...string) string { + return m.MergePodCmd("", m.Prefix(web.PORTAL)) + "?debug=true" + + "#" + kit.Join([]string{arg[0], kit.Select(m.PrefixKey(), arg, 1), kit.Select("", arg, 2)}, ":") +} + +type Portal struct { + portal + export string `data:"true"` + short string `data:"index"` + field string `data:"time,name,icons,index,order,enable,type,role"` + inputs string `name:"inputs" role:"void"` +} + +func init() { ice.TeamCtxCmd(Portal{}) } diff --git a/src/gonganxitong/portal.js b/src/gonganxitong/portal.js index 5a52662..eb393b2 100644 --- a/src/gonganxitong/portal.js +++ b/src/gonganxitong/portal.js @@ -16,6 +16,7 @@ Volcanos(chat.ONIMPORT, { ] }, myPortal: function(can, msg, PLACE_UID, PLACE_NAME, title) { can.user.isMobile && can.isCmdMode() && can.onappend.style(can, html.OUTPUT) + var PLACE_TYPE = PLACE_NAME.replace("_name", "_type") can.isCmdMode() && (can.db.hash = can.misc.SearchHash(can)) can.sup.current = can.sup.current||{} if (can.Option(PLACE_UID) == "") { @@ -27,8 +28,9 @@ Volcanos(chat.ONIMPORT, { msg.Option(ice.MSG_ACTION) && can.onappend._action(can, msg.Option(ice.MSG_ACTION), target) }}]) }}]) + debugger msg.Table(function(value) { var key = "_trans.value."+PLACE_NAME.replace("_name", "_type")+".icons." - msg.Push(mdb.ICONS, can.Conf(key+value.place_type)||can.Conf(key+"office")) + msg.Push(mdb.ICONS, can.Conf(key+value[PLACE_TYPE])||can.Conf(key+"office")) }) var uid = can.onimport.myPlace(can, msg, can.ui.myplace, PLACE_UID, PLACE_NAME) msg.Length() > 0 && can.run({}, [uid], function(msg) { diff --git a/src/gonganxitong/portal.shy b/src/gonganxitong/portal.shy index b51013e..f563793 100644 --- a/src/gonganxitong/portal.shy +++ b/src/gonganxitong/portal.shy @@ -1,4 +1,4 @@ -chapter "用户场所" +chapter "公安系统" refer ` ICON https://igoutu.cn/icons/officel GORM https://gorm.io/docs/indexes.html @@ -8,4 +8,4 @@ field web.code.mysql.client field web.code.mysql.query args `mysql gonganxitong` field web.code.db.database field web.code.db.driver -field web.code.db.models \ No newline at end of file +field web.code.db.models diff --git a/src/gonganxitong/qrcode.go b/src/gonganxitong/qrcode.go index f30cefc..b742aac 100644 --- a/src/gonganxitong/qrcode.go +++ b/src/gonganxitong/qrcode.go @@ -10,7 +10,7 @@ import ( type qrcode struct { portal portal userPlace userPlace - list string `name:"list place_uid uid auto" role:"void"` + list string `name:"list place_uid auto" role:"void"` } func (s qrcode) Init(m *ice.Message, arg ...string) { @@ -19,12 +19,8 @@ func (s qrcode) Init(m *ice.Message, arg ...string) { func (s qrcode) List(m *ice.Message, arg ...string) { msg := m.Cmd(s.userPlace, m.Option(model.USER_UID), arg[0]) m.FieldsSetDetail() - kit.For([]string{ - model.CITY_NAME, model.STREET_NAME, model.PLACE_NAME, model.PLACE_ADDRESS, - }, func(key string) { - m.Push(key, msg.Append(key)) - }) - m.EchoQRCode(cmdurl(m, arg[0], m.Prefix("apply"))) + kit.For([]string{model.CITY_NAME, model.STREET_NAME, model.PLACE_NAME, model.PLACE_ADDRESS}, func(key string) { m.Push(key, msg.Append(key)) }) + m.EchoQRCode(s.portal.Link(m, arg[0], m.Prefix("apply"))) } func init() { ice.TeamCtxCmd(qrcode{}) } diff --git a/src/gonganxitong/userPlace.go b/src/gonganxitong/userPlace.go index 3ecc6ec..16f5dae 100644 --- a/src/gonganxitong/userPlace.go +++ b/src/gonganxitong/userPlace.go @@ -11,25 +11,15 @@ type userPlace struct { place place street street city city - create string `name:"create user_uid* place_uid* role* begin_time end_time"` - list string `name:"list user_uid place_uid auto"` } func (s userPlace) List(m *ice.Message, arg ...string) { - s.Tables(m, s.place, s.street, s.city).Fields(m, "user_places.created_at", "user_places.id", + s.Tables(m, s.place, s.street, s.city).Fields(m, + s.Key(s, model.CREATED_AT), model.PLACE_NAME, model.PLACE_TYPE, model.USER_PLACE_ROLE, model.CITY_NAME, model.STREET_NAME, model.PLACE_ADDRESS, model.USER_UID, model.PLACE_UID, - ).Orders(m, "created_at DESC") - if len(arg) == 0 { - if m.IsTech() { - s.Select(m) - } - } else if len(arg) == 1 { - s.Select(m, model.USER_UID, arg[0]) - } else { - s.Select(m.FieldsSetDetail(), model.PLACE_UID, arg[1]) - } + ).Orders(m, s.Desc(model.CREATED_AT)).Select(m, model.USER_UID, arg[0]) s.RewriteAppend(m) } diff --git a/usr/local/export/web.team.gonganxitong.portal/hash.json b/usr/local/export/web.team.gonganxitong.portal/hash.json index 3ed5ef2..a7e875d 100644 --- a/usr/local/export/web.team.gonganxitong.portal/hash.json +++ b/usr/local/export/web.team.gonganxitong.portal/hash.json @@ -2,51 +2,86 @@ "27c6988eeb07c78cbb49aa15c577cfa4": { "meta": { "enable": "true", + "icons": "https://img.icons8.com/officel/80/edit-property.png", "index": "web.team.gonganxitong.apply", "name": "申请单", "order": "2", "role": "visitor,tenant", - "time": "2024-07-31 22:13:57.022" + "time": "2024-08-02 17:16:31.610" + } + }, + "3c12d065a7b2fb9a8a09f47d87bd5bef": { + "meta": { + "index": "web.team.gonganxitong.express.express", + "time": "2024-08-02 22:10:41.621" + } + }, + "58724bdcc3cae3e26700cb3199e0602c": { + "meta": { + "enable": "true", + "icons": "https://img.icons8.com/officel/80/person-at-home.png", + "index": "web.team.gonganxitong.placeUser", + "name": "场所用户", + "order": "4", + "role": "creator,landlord", + "time": "2024-08-02 17:16:31.610" + } + }, + "6154e70009651fcae3e9be1b53580db1": { + "meta": { + "index": "web.team.express.express", + "time": "2024-08-02 13:22:54.776" } }, "91dd0e9590d3021944f14f3ec8653beb": { "meta": { "enable": "true", + "icons": "https://img.icons8.com/officel/80/receipt-approved.png", "index": "web.team.gonganxitong.order", "name": "审批单", "order": "3", "role": "creator,landlord", - "time": "2024-07-31 22:13:57.024" + "time": "2024-08-02 17:07:48.171" + } + }, + "ad574b9493741774ef8cb3fd5efd8026": { + "meta": { + "enable": "true", + "icons": "https://img.icons8.com/officel/80/shipped.png", + "index": "web.team.gonganxitong.express", + "name": "寄快递", + "order": "5", + "time": "2024-08-02 12:47:45.588" } }, "bdec92d5849b2a60a8811cff494f2391": { "meta": { - "enable": "true", + "enable": "false", + "icons": "https://img.icons8.com/officel/80/property-with-timer.png", "index": "web.team.gonganxitong.event", "name": "事件流", - "order": "4", - "role": "creator,landlord", - "time": "2024-07-31 22:13:57.027" + "role": "creator", + "time": "2024-08-02 17:16:31.613" } }, "e2117b53c036a72fe7e4885449488a6f": { "meta": { "enable": "true", - "icons": "usr/icons/Chess.png", + "icons": "https://img.icons8.com/officel/80/qr-code.png", "index": "web.team.gonganxitong.qrcode", "name": "场所码", "order": "1", - "role": "creator,landlord", - "time": "2024-07-31 22:13:57.020" + "time": "2024-08-02 16:32:26.372" } }, "fd86aad80a667152781bb188fb1249a2": { "meta": { - "icons": "usr/icons/Mail.png", + "enable": "false", + "icons": "https://img.icons8.com/officel/80/reading-confirmation.png", "index": "web.team.gonganxitong.email", "name": "邮箱配置", - "order": "5", - "time": "2024-07-31 22:13:57.027" + "role": "creator", + "time": "2024-08-02 17:16:31.613" } } }