Compare commits

...

98 Commits

Author SHA1 Message Date
shy
5f0564604d opt some 2025-03-15 20:47:21 +08:00
shy
6fa0b642f7 opt some 2025-03-11 11:43:17 +08:00
shy
040c995851 opt some 2025-03-11 11:42:01 +08:00
shy
44798fa2c3 opt some 2025-03-03 19:49:59 +08:00
shy
a49098b586 add some 2025-03-03 07:52:48 +08:00
shy
7f8c011e23 opt some 2025-02-28 21:29:31 +08:00
shy
e31f4f47af opt some 2025-02-28 14:27:09 +08:00
shy
2ce0a291d3 add some 2025-02-27 18:30:18 +08:00
shy
ea8c670f56 add some 2025-02-27 18:28:48 +08:00
shy
e3c29da388 add some 2025-02-27 16:27:27 +08:00
shy
0cb1fa1338 add some 2025-02-27 14:37:49 +08:00
shy
b82bc3200e opt some 2025-02-26 22:23:01 +08:00
shy
a72bb9af0f opt some 2025-02-26 22:22:14 +08:00
shy
12c3c77bb8 add some 2025-02-25 09:59:35 +08:00
shy
da4c9553a8 add some 2025-02-14 16:15:44 +08:00
shy
1fde3580cd opt some 2025-01-05 16:59:42 +08:00
shy
d0cc6d9b8b add some 2025-01-05 16:00:58 +08:00
shy
c8c9d1c376 add some 2025-01-05 15:59:23 +08:00
shy
c46547c49f add some 2025-01-05 15:56:38 +08:00
shy
5ae117eedf add some 2025-01-05 15:56:27 +08:00
shy
0fadf387f6 opt some 2024-12-29 19:33:31 +08:00
shy
d57bdb9d12 add some 2024-12-29 19:25:16 +08:00
shy
755d416101 add some 2024-12-23 10:48:30 +08:00
shy
32f49a9d86 opt some 2024-12-17 15:38:29 +08:00
shy
82f8e0429c add some 2024-12-15 09:40:16 +08:00
shy
e4d89bf796 opt some 2024-12-15 09:31:25 +08:00
shy
6816ee3acb add some 2024-12-08 22:45:39 +08:00
shy
30ff2755d9 add some 2024-12-08 22:27:22 +08:00
root
e60f08f8f1 add some 2024-11-27 14:56:53 +08:00
shy
b10ec05695 add some 2024-11-26 09:11:05 +08:00
shy
a1f2b2f0fe add some 2024-11-25 10:06:00 +08:00
root
6d00a1264d add some 2024-11-10 13:07:52 +08:00
root
32a2d257f7 add some 2024-10-25 17:49:09 +08:00
root
7ffb21de1c add some 2024-10-20 22:55:46 +08:00
root
53f8bb5a1c add some 2024-10-20 18:46:20 +08:00
root
940d6d7b3a add some 2024-10-17 23:46:16 +08:00
root
20809432f6 add some 2024-10-17 23:46:11 +08:00
root
52fdf3fc9b add some 2024-10-16 14:16:25 +08:00
root
be4d51195e add some 2024-10-16 14:00:19 +08:00
root
7996ee6474 add some 2024-10-15 18:25:15 +08:00
shy
76fa23fc67 opt some 2024-10-09 15:04:59 +08:00
shy
c490f8519e add some 2024-10-06 23:24:47 +08:00
shy
62a682232b add some 2024-10-04 18:44:41 +08:00
shy
234e819519 add some 2024-10-04 18:44:38 +08:00
shy
06a20c3601 add some 2024-10-04 18:43:00 +08:00
shy
f3421afe4a add some 2024-10-04 12:23:30 +08:00
shy
109a06534b add some 2024-10-03 07:13:59 +08:00
shy
f74893e311 opt some 2024-10-01 08:21:38 +08:00
shy
ad5e408ded add some 2024-10-01 08:08:43 +08:00
shy
0fa35941f3 add some 2024-10-01 00:12:56 +08:00
shy
b1b4e0d28c add some 2024-09-26 16:48:22 +08:00
shy
fb0233f04c add some 2024-09-25 17:16:12 +08:00
shy
5d407f81d6 add some 2024-09-24 13:11:41 +08:00
shy
bf13e91d01 add some 2024-09-24 13:11:23 +08:00
shy
3ca3d6ae9c add some 2024-09-20 20:53:30 +08:00
jingganjiaoyu
c58811a855 opt some 2024-09-19 21:19:57 +08:00
shy
c48be02914 add some 2024-09-18 13:34:22 +08:00
shy
6a9f8b7a5c add some 2024-09-15 20:05:23 +08:00
shy
883ebc6540 add some 2024-09-15 20:00:31 +08:00
shy
4fe3e79a48 add some 2024-09-15 20:00:11 +08:00
shy
7e14e50872 add some 2024-09-14 00:39:08 +08:00
shy
f1685f82db add some 2024-09-14 00:36:25 +08:00
shy
0d4b0617f6 add some 2024-09-05 20:02:44 +08:00
shy
fb8e112883 add some 2024-09-03 18:30:15 +08:00
jingganjiaoyu
ba782296cc opt some 2024-09-02 18:41:07 +08:00
shy
3b164a3523 add some 2024-09-02 17:34:55 +08:00
shy
4f30a6610f add some 2024-09-02 12:19:39 +08:00
shy
5d63ffdbc0 add some 2024-09-02 12:18:58 +08:00
shy
e3fd37dc41 add some 2024-09-01 23:45:17 +08:00
jingganjiaoyu
adf4897156 opt some 2024-09-01 23:44:41 +08:00
jingganjiaoyu
a190cf91bf opt some 2024-08-30 21:56:19 +08:00
shy
23ec01591b add some 2024-08-29 11:11:02 +08:00
jingganjiaoyu
077186704a opt some 2024-08-29 11:10:04 +08:00
shy
463d9521e7 add some 2024-08-27 20:43:45 +08:00
shy
e4b1e13920 add some 2024-08-24 20:25:11 +08:00
shy
f9296dc896 add some 2024-08-24 20:22:39 +08:00
shy
262e8eb910 add some 2024-08-21 23:13:40 +08:00
shy
10ef85d162 add some 2024-08-21 11:06:45 +08:00
shy
fd0aec6d3d add some 2024-08-20 22:09:25 +08:00
jingganjiaoyu
4d41683af7 opt some 2024-08-20 19:53:35 +08:00
jingganjiaoyu
5479db71f6 opt some 2024-08-18 02:26:10 +08:00
shy
98889b3cb6 add some 2024-08-16 07:53:19 +08:00
shy
4d4edacaf5 add some 2024-08-12 21:07:25 +08:00
shy
4eb4540d1c add some 2024-08-12 21:03:04 +08:00
shy
a853243c17 add some 2024-08-12 20:55:09 +08:00
shy
251f90e3c0 add some 2024-08-12 20:17:30 +08:00
jingganjiaoyu
41ed1f8ac7 opt some 2024-08-06 19:16:32 +08:00
shy
4294badf93 add some 2024-08-06 19:10:14 +08:00
shy
49accbc564 add some 2024-08-06 01:33:32 +08:00
shy
afbde5d48e add some 2024-08-05 23:20:45 +08:00
jingganjiaoyu
49f7726917 opt some 2024-08-05 02:09:40 +08:00
shy
d26d1024f7 add some 2024-08-04 14:55:33 +08:00
jingganjiaoyu
3cfd410a5a opt some 2024-08-04 14:54:26 +08:00
jingganjiaoyu
7c796c4ae0 opt some 2024-08-04 01:48:38 +08:00
jingganjiaoyu
e4e1a032ba opt some 2024-08-03 09:20:09 +08:00
shy
921f638b8d add some 2024-08-02 18:41:39 +08:00
jingganjiaoyu
48bedf9b2c opt portal 2024-07-28 23:20:53 +08:00
jingganjiaoyu
5c435b39ab opt some 2024-07-26 21:27:14 +08:00
64 changed files with 3085 additions and 241 deletions

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2020 shylinux
Copyright (c) 2017-2025 shylinux
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.

View File

@ -5,8 +5,8 @@ flags = -ldflags "-w -s" -v
all: def
@date +"%Y-%m-%d %H:%M:%S"
go build ${flags} -o ${binarys} src/main.go ${version} ${binpack} && ./${binarys} forever restart &>/dev/null
go build ${flags} -o ${binarys} src/main.go src/option.go ${version} ${binpack} && ./${binarys} forever restart &>/dev/null
def:
@[ -f ${version} ] || echo "package main">${version}
@[ -f ${binpack} ] || echo "package main">${binpack}
@[ -f ${binpack} ] || echo "package main">${binpack}

View File

@ -1,11 +1,11 @@
# Contexts
Contexts 通过模块化、集群化、自动化的方式,只用一个 20M 大小的程序文件,就可以在各种设备上,一键启动完整的云计算服务与云研发环境。
# ContextOS
ContextOS 通过集群化、模块化、自动化的方式,只用一个 20M 大小的程序文件,就可以在各种设备上,一键启动完整的云计算服务与云研发环境。
## 源码安装
### 克隆编译
## 安装系统
### 下载编译
```sh
git clone https://shylinux.com/x/contexts
cd contexts; source etc/miss.sh
git clone https://shylinux.com/x/ContextOS
cd ContextOS; source etc/miss.sh
```
### 启动服务
@ -13,7 +13,5 @@ cd contexts; source etc/miss.sh
ish_miss_serve
```
### 访问网页
```sh
open http://localhost:9020
```
### 管理后台
打开管理后台 [http://localhost:9020](http://localhost:9020)

View File

@ -1,4 +1,2 @@
~web.code.db
config database driver mysql
~ssh
source local.shy

View File

@ -12,4 +12,4 @@ ish_miss_prepare_project
ish_miss_prepare_contexts
ish_miss_prepare_resource
ish_miss_make; [ -z "$*" ] || ish_miss_serve "$@"
ish_miss_make; [ -z "$*" ] || ish_miss_serve "$@"

48
go.mod
View File

@ -1,10 +1,48 @@
module shylinux.com/x/education
go 1.13
go 1.21
require (
shylinux.com/x/ice v1.5.40
shylinux.com/x/icebergs v1.9.38
shylinux.com/x/mysql-story v0.6.13
shylinux.com/x/toolkits v1.0.12
shylinux.com/x/community v0.0.28
shylinux.com/x/enterprise v0.0.17 // indirect
shylinux.com/x/golang-story v0.0.32 // indirect
shylinux.com/x/mysql-story v0.6.32
)
require (
shylinux.com/x/ice v1.5.74
shylinux.com/x/icebergs v1.9.76
shylinux.com/x/toolkits v1.0.19
)
require (
shylinux.com/x/go-git/v5 v5.6.7 // indirect
shylinux.com/x/go-qrcode v0.0.3 // indirect
shylinux.com/x/websocket v0.0.4 // indirect
)
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/emersion/go-imap v1.2.1 // indirect
github.com/emersion/go-message v0.15.0 // indirect
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594 // indirect
github.com/glebarez/go-sqlite v1.21.2 // indirect
github.com/glebarez/sqlite v1.11.0 // indirect
github.com/go-sql-driver/mysql v1.9.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/wechatpay-apiv3/wechatpay-go v0.2.20 // indirect
golang.org/x/sys v0.21.0 // indirect
golang.org/x/text v0.22.0 // indirect
gorm.io/driver/mysql v1.5.7 // indirect
gorm.io/gorm v1.25.12 // indirect
modernc.org/libc v1.22.5 // indirect
modernc.org/mathutil v1.5.0 // indirect
modernc.org/memory v1.5.0 // indirect
modernc.org/sqlite v1.23.1 // indirect
)

171
go.sum
View File

@ -1,62 +1,203 @@
github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw=
github.com/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw=
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
github.com/emersion/go-message v0.15.0 h1:urgKGqt2JAc9NFJcgncQcohHdiYb803YTH9OQwHBHIY=
github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ=
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594 h1:IbFBtwoTQyw0fIM5xv1HF+Y+3ZijDR839WMulgxCcUY=
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U=
github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo=
github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k=
github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=
github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql v1.9.0 h1:Y0zIbQXhQKmQgTp44Y1dp3wTXcn804QoTptLZT1vtvo=
github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/wechatpay-apiv3/wechatpay-go v0.2.20 h1:gS8oFn1bHGnyapR2Zb4aqTV6l4kJWgbtqjCq6k1L9DQ=
github.com/wechatpay-apiv3/wechatpay-go v0.2.20/go.mod h1:A254AUBVB6R+EqQFo3yTgeh7HtyqRRtN2w9hQSOrd4Q=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
gorm.io/driver/sqlite v1.5.6/go.mod h1:U+J8craQU6Fzkcvu8oLeAQmi50TkwPEhHDEjQZXDah4=
gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20=
modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0=
modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI=
modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g=
modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY=
modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA=
modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0=
modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI=
modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE=
modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY=
modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM=
modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk=
modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c=
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=
shylinux.com/x/community v0.0.28 h1:/h7gthD8X6lVh1dDg3W3sBX4dpotbddfdGdR/BqBV4c=
shylinux.com/x/community v0.0.28/go.mod h1:MamBZhpO3+c5YISRJt4xnxa5VDBBstUR+9FnPQrhZMU=
shylinux.com/x/enterprise v0.0.17 h1:29VjNHt4YiPryQGNtVTnYqiXNHxau4EnkoUDzlxgB6Y=
shylinux.com/x/enterprise v0.0.17/go.mod h1:+DmZbYMykX5U65BJ7DYOcwFubslKa2b78DyRaqUYuH4=
shylinux.com/x/go-git/v5 v5.6.7 h1:WD5QSco7m3QooPCgdvQ6/GyGIFPun8C+hex5N41LYlk=
shylinux.com/x/go-git/v5 v5.6.7/go.mod h1:Qb0lA+uIrofZg8NQerhYcJHgGWixFqvS6p3aJ/L5Nlk=
shylinux.com/x/go-qrcode v0.0.3 h1:RMo+Vidbgq3HatLBj7DDXcTbTLFUwzis5K7TqBkD38U=
shylinux.com/x/go-qrcode v0.0.3/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po=
shylinux.com/x/go-sql-mysql v0.0.2/go.mod h1:lHjRMZz5Lii6U+49fhkbCWgsnL+yux54SYJYWqASN8Y=
shylinux.com/x/ice v1.5.40 h1:OC++Fb1CxOU1R0Vlrfm+J9pf1mg5uH1n1trXFIHQHaw=
shylinux.com/x/ice v1.5.40/go.mod h1:nYLBfYfOacaxvIRgD4ryknBJTqUIZD0zkV72it7iHqU=
shylinux.com/x/icebergs v1.9.38 h1:LS4n8KE3qV8uvdpWwnrgStgkU90f6Ww6prSpv7Eztyw=
shylinux.com/x/icebergs v1.9.38/go.mod h1:zLsVvLKuFEyFRwKoa3li75nSqbJo/GVIYacAQVdTsxA=
shylinux.com/x/mysql-story v0.6.13 h1:+PCSRK9IoaeNU8/zonq1jFZY5UW2dKpqTANyFUzLxAI=
shylinux.com/x/mysql-story v0.6.13/go.mod h1:HIBUuqZ/kQqwiFtPpekaiJB98qij+d9uhmnkAfahDXw=
shylinux.com/x/golang-story v0.0.32 h1:7xu28iREL2cuZzf80luJwI9BWptow+ME00L1lgyjmDI=
shylinux.com/x/golang-story v0.0.32/go.mod h1:NsI5fULu3q7o2b+VzZ5tiJ3+0pUTjE9DdQxa870htmw=
shylinux.com/x/ice v1.5.73/go.mod h1:uGI73gYkk+FiJt5qmy/aYhoKRJ4wobcJk3WrPGh8Waw=
shylinux.com/x/ice v1.5.74 h1:5hTPmchO79b1d2+/DwBDLiG2WkTL65G/hOEAcGJVeB8=
shylinux.com/x/ice v1.5.74/go.mod h1:/XAib8Ha+z6jzLRs2Pig+qxDx4C8dT8Vfaq2InJ/lkU=
shylinux.com/x/icebergs v1.9.75/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk=
shylinux.com/x/icebergs v1.9.76 h1:SHOTbiO+jh09GEFzoo8t8kmR1BCu+zkNCpdfxPCLeu0=
shylinux.com/x/icebergs v1.9.76/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk=
shylinux.com/x/mysql-story v0.6.32 h1:Q274WFJ09ocnf8nhlQnKr02FMMdPYBLWqu2IjTVqGiM=
shylinux.com/x/mysql-story v0.6.32/go.mod h1:8HCeDUV6ghaIeJD1IEhSeSOfVC9wEI93y2G9QBLtJJY=
shylinux.com/x/toolkits v0.7.10/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.12 h1:dwskBNtOLBfis1XtjEGfJhrjBXiwga3M/wNCERsXsyo=
shylinux.com/x/toolkits v1.0.12/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.19 h1:Nrx0xYRc5ph1WS66EZ1hJUCe+2FdSWQ4QP6tBlguikQ=
shylinux.com/x/toolkits v1.0.19/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/websocket v0.0.4 h1:AJpwblePoOpiE6C8NrvgNYpKTotXMLrDDX2chTvx44Q=
shylinux.com/x/websocket v0.0.4/go.mod h1:3UGWkjTu3ie5NAZen7J+uLPBrO7DFeKloj6Jxo13Oiw=

7
src/document/content.shy Normal file
View File

@ -0,0 +1,7 @@
spark project "云时代的新型操作系统,既要完全自给自足,又要任意互联互通" `
<b>教务系统:</b>
<b>教材资料:</b>
<b>在线课堂:</b>
<b>考试系统:</b>
`
spark product

11
src/document/index.shy Normal file
View File

@ -0,0 +1,11 @@
navmenu `
"{{ .Title }}" /
_
"下 载" download/
"文 档" started/
"开 发" development/
_
"应 用" "https://web.shylinux.com/s/20240724-education"
"源 码" "https://git.shylinux.com/web/education"
"社 区" "https://bbs.shylinux.com"
`

View File

@ -0,0 +1,45 @@
package jiaocaiziliao
import (
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/education/src/jiaocaiziliao/model"
"shylinux.com/x/education/src/jiaowuxitong"
)
type Table struct {
jiaowuxitong.Table
list string `name:"list library_uid uid auto" role:"void"`
}
func (s Table) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
case model.USER_LIBRARY_ROLE:
s.InputsListRole(m, UserLibraryRoleList, arg...)
case model.LIBRARY_TYPE:
s.InputsList(m, LibraryTypeList, arg...)
case model.DOCUMENT_TYPE:
s.InputsList(m, DocumentTypeList, arg...)
default:
s.Table.Inputs(m, arg...)
}
}
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
m.RewriteAppend(func(value, key string, index int) string {
switch key {
case model.USER_LIBRARY_ROLE:
value = UserLibraryRole(kit.Int(value)).String()
case model.LIBRARY_TYPE:
value = LibraryType(kit.Int(value)).String()
case model.DOCUMENT_TYPE:
value = DocumentType(kit.Int(value)).String()
}
return value
})
return s.Table.RewriteAppend(m)
}
type Tables struct{ Table }
func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {}

View File

@ -0,0 +1,18 @@
package jiaocaiziliao
import "shylinux.com/x/ice"
type content struct {
Table
order string `data:"1"`
fields string `data:"title,user_uid"`
create string `name:"create title*" role:"teacher"`
remove string `name:"remove" role:"teacher"`
}
func (s content) List(m *ice.Message, arg ...string) {
s.ValueList(m, arg)
m.Action(s.Create)
}
func init() { ice.TeamCtxCmd(content{}) }

View File

@ -0,0 +1,28 @@
package jiaocaiziliao
import "shylinux.com/x/ice"
type document struct {
Table
fields string `data:"subject,grade,document_type,title,content,icon,link,user_uid"`
create string `name:"create subject* grade* document_type*:select title* content* icon link" role:"teacher"`
remove string `name:"remove" role:"teacher"`
}
func (s document) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func init() { ice.TeamCtxCmd(document{}) }
type DocumentType int
const (
DocumentBook DocumentType = iota
DocumentPaper
)
var DocumentTypeList = map[DocumentType]string{
DocumentBook: "book",
DocumentPaper: "paper",
}
func (s DocumentType) String() string { return DocumentTypeList[s] }

View File

@ -0,0 +1,11 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { return [
{view: html.TITLE, list: [value.title]},
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value)]},
{view: html.STATUS, list: [value.school, value.grade, value.subject]},
{view: html.OUTPUT, list: [value.content]},
{view: html.OUTPUT, list: [{type: "a", href: value.link, inner: "在线阅读"}]},
] })
},
})

View File

@ -0,0 +1,21 @@
package jiaocaiziliao
import "shylinux.com/x/ice"
type library struct{ Table }
func init() { ice.TeamCtxCmd(library{}) }
type LibraryType int
const (
LibraryPersonal LibraryType = iota
LibraryPublisher
)
var LibraryTypeList = map[LibraryType]string{
LibraryPersonal: "personal",
LibraryPublisher: "publisher",
}
func (s LibraryType) String() string { return LibraryTypeList[s] }

View File

@ -0,0 +1,46 @@
package model
import "shylinux.com/x/mysql-story/src/db"
const (
UID = "uid"
NAME = "name"
INFO = "info"
TYPE = "type"
TITLE = "title"
CONTENT = "content"
USER_UID = "user_uid"
USER_LIBRARY_ROLE = "user_library_role"
LIBRARY_UID = "library_uid"
LIBRARY_TYPE = "library_type"
DOCUMENT_UID = "document_uid"
DOCUMENT_TYPE = "document_type"
LINK = "link"
)
type UserLibrary struct {
db.ModelUserPlace
LibraryUID string `gorm:"type:char(32);index"`
}
type Library struct {
db.ModelPlace
SchoolUID string `gorm:"type:char(32);index"`
Link string `gorm:"type:varchar(255)"`
}
type Document struct {
db.ModelContent
LibraryUID string `gorm:"type:char(32);index"`
Subject string `gorm:"type:varchar(32)"`
Grade string `gorm:"type:varchar(32)"`
Type uint8 `gorm:"default:0"`
Icon string `gorm:"type:varchar(128)"`
Link string `gorm:"type:varchar(255)"`
}
type Content struct {
db.ModelWithUID
LibraryUID string `gorm:"type:char(32);index"`
UserUID string `gorm:"type:char(32)"`
Title string `gorm:"type:varchar(64)"`
}
func init() { db.CmdModels("", &UserLibrary{}, &Library{}, &Document{}, &Content{}) }

View File

@ -0,0 +1,19 @@
package jiaocaiziliao
import (
"shylinux.com/x/ice"
"shylinux.com/x/education/src/jiaocaiziliao/model"
)
type offical struct {
Tables
userLibrary userLibrary
}
func (s offical) List(m *ice.Message, arg ...string) {
m.Cmdy(s.userLibrary, m.Option(model.USER_UID), arg)
m.ProcessOpen(m.Append(model.LINK))
}
func init() { ice.TeamCtxCmd(offical{}) }

View File

@ -0,0 +1,13 @@
package jiaocaiziliao
import (
"shylinux.com/x/community/src/gonganxitong"
"shylinux.com/x/education/src/jiaowuxitong"
)
type Portal struct {
jiaowuxitong.Portal
placeCreate string `name:"placeCreate city_name* school_name* library_name* library_type*:select link" role:"void"`
}
func init() { gonganxitong.PortalCmd(Portal{Portal: jiaowuxitong.NewPortal(userLibrary{}, library{})}) }

View File

@ -0,0 +1,38 @@
{
"portal": "教材资料",
"official": "官方网站",
"document": "教材资料",
"content": "目录索引",
"icons": {
"content": "https://img.icons8.com/officel/80/activity-grid.png",
"official": "https://img.icons8.com/officel/80/activity-grid.png",
"document": "https://img.icons8.com/officel/80/activity-grid.png"
},
"input": {
"My Library": "我的文库",
"user_library_role": "用户角色",
"library_name": "文库名称",
"library_type": "文库类型",
"document_type": "文档类型",
"school": "学校",
"subject": "学科",
"grade": "年级"
},
"value": {
"user_library_role": {
"visitor": "访客",
"creator": "创建人",
"teacher": "老师",
"student": "学生",
"parent": "家长",
"style": {
"creator": "danger",
"teacher": "danger"
}
},
"library_type": {
"personal": "个人版",
"publisher": "出版社"
}
}
}

View File

@ -0,0 +1,15 @@
package jiaocaiziliao
import (
"shylinux.com/x/ice"
"shylinux.com/x/education/src/jiaowuxitong"
)
type userLibrary struct{ Table }
func init() { ice.TeamCtxCmd(userLibrary{}) }
type UserLibraryRole = jiaowuxitong.UserClassRole
var UserLibraryRoleList = jiaowuxitong.UserClassRoleList

View File

@ -2,17 +2,22 @@ package jiaowuxitong
import (
"shylinux.com/x/ice"
"shylinux.com/x/icebergs/base/mdb"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type Class struct {
Table
create string `name:"create school_uid* grade* name*"`
}
type class struct{ Table }
func (s Class) Inputs(m *ice.Message, arg ...string) {
func (s class) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
case mdb.NAME:
case model.GRADE:
y := kit.Int(kit.Split(m.Time(), "-")[0])
for i := 0; i < 20; i++ {
m.Push(arg[0], kit.Format("%d级", y))
y--
}
case model.NAME:
m.Push(arg[0], "高一二班")
m.Push(arg[0], "高二三班")
m.Push(arg[0], "初一一班")
@ -23,4 +28,22 @@ func (s Class) Inputs(m *ice.Message, arg ...string) {
}
}
func init() { ice.Cmd(prefixKey(), Class{}) }
func init() { ice.TeamCtxCmd(class{}) }
type ClassType int
const (
ClassTerm ClassType = iota
ClassWeekly
ClassStep
ClassFree
)
var ClassTypeList = map[ClassType]string{
ClassTerm: "term",
ClassWeekly: "weekly",
ClassStep: "step",
ClassFree: "free",
}
func (s ClassType) String() string { return ClassTypeList[s] }

View File

@ -1,54 +1,63 @@
package jiaowuxitong
import (
"reflect"
"strings"
"strconv"
"shylinux.com/x/ice"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/community/src/gonganxitong"
"shylinux.com/x/education/src/jiaowuxitong/model"
"shylinux.com/x/mysql-story/src/db"
_ "shylinux.com/x/mysql-story/src/db/mysql"
)
type Table struct {
db.Table
create string `name:"create name*"`
gonganxitong.Table
list string `name:"list class_uid uid auto" role:"void"`
}
func (s Table) Init(m *ice.Message, arg ...string) {
kit.If(m.Config(web.PORTAL) == ice.TRUE, func() { m.GoSleep("30ms", func() { portal{}.Show(m) }) })
}
func (s Table) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
case model.USER_UID, model.CLASS_UID, model.SCHOOL_UID:
m.Optionv(mdb.SELECT, model.UID, model.NAME)
m.Cmdy(m.Prefix(strings.TrimSuffix(arg[0], "_uid"))).RenameAppend(model.UID, arg[0])
case GRADE:
y := kit.Int(kit.Split(m.Time(), "-")[0])
for i := 0; i < 10; i++ {
m.Push(arg[0], kit.Format("%d级", y))
y--
}
case model.USER_CLASS_ROLE:
s.InputsListRole(m, UserClassRoleList, arg...)
case model.CLASS_TYPE:
s.InputsList(m, ClassTypeList, arg...)
case model.SCHOOL_UID:
m.Cmdy(school{}, s.Select).Cut(model.UID, model.NAME).RenameAppend(model.UID, arg[0])
m.DisplayInputKeyNameIconTitle()
case model.SCHOOL_NAME, model.CITY_NAME:
m.Cmdy(Portal{}, Portal{}.PlaceList, m.Option(model.USER_UID)).Cut(arg[0])
default:
s.Table.Inputs(m, arg...)
}
}
func (s Table) LeftJoin(target ice.Any) string {
model, models := "", ""
switch target := target.(type) {
case string:
model = target
default:
model = kit.LowerCapital(kit.Select("", kit.Split(reflect.TypeOf(target).String(), "."), -1))
}
if kit.HasSuffix(model, "s") {
models = model + "es"
} else {
models = model + "s"
}
return kit.Format("left join %s on %s_uid = %s.uid", models, model, models)
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
m.RewriteAppend(func(value, key string, index int) string {
if _, e := strconv.ParseInt(value, 10, 64); e != nil {
return value
}
switch key {
case model.USER_CLASS_ROLE:
value = UserClassRole(kit.Int(value)).String()
case model.CLASS_TYPE:
value = ClassType(kit.Int(value)).String()
}
return value
})
return s.Table.RewriteAppend(m)
}
func (s Table) SelectJoinSchool(m *ice.Message) {
s.SelectJoin(m, school{}, model.NAME, model.CITY_UID)
s.SelectJoinCity(m)
}
func (s Table) CheckRole(m *ice.Message, arg ...string) {
role := UserClassRole(s.UserPlaceRole(m))
m.WarnNotRight(!kit.IsIn(role.String(), append(arg, UserClassCreator.String())...), role.String())
}
func prefixKey() string { return kit.Keys("web.team", kit.PathName(-1), kit.FileName(-1)) }
type Tables struct{ Table }
func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {}
func NewPortal(userPlace gonganxitong.UserPlacer, place gonganxitong.Placer) Portal {
return Portal{Portal: gonganxitong.NewPortal(userPlace, place, school{})}
}

View File

@ -4,10 +4,11 @@ import "shylinux.com/x/ice"
type homework struct {
Table
portal string `data:"true"`
driver string `data:"mysql"`
models string `data:"homework"`
create string `name:"create class_uid* content*"`
fields string `data:"title,content,user_uid"`
create string `name:"create title* content*" role:"teacher"`
remove string `name:"remove" role:"teacher"`
}
func init() { ice.Cmd(prefixKey(), homework{}) }
func (s homework) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func init() { ice.TeamCtxCmd(homework{}) }

View File

@ -0,0 +1,9 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { return [
{view: html.TITLE, list: [value.title]},
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.user_name]},
{view: html.OUTPUT, list: [value.content]},
] })
},
})

View File

@ -1,52 +1,41 @@
package model
import (
"shylinux.com/x/ice"
"shylinux.com/x/mysql-story/src/db"
)
import "shylinux.com/x/mysql-story/src/db"
const (
UID = "uid"
NAME = "name"
USER_UID = "user_uid"
USER_NAME = "user_name"
CLASS_UID = "class_uid"
CLASS_NAME = "class_name"
SCHOOL_UID = "school_uid"
SCHOOL_NAME = "school_name"
UID = "uid"
NAME = "name"
INFO = "info"
TYPE = "type"
TITLE = "title"
CONTENT = "content"
USER_UID = "user_uid"
USER_CLASS_ROLE = "user_class_role"
CLASS_UID = "class_uid"
CLASS_TYPE = "class_type"
SCHOOL_UID = "school_uid"
SCHOOL_NAME = "school_name"
CITY_UID = "city_uid"
CITY_NAME = "city_name"
AUTH_UID = "auth_uid"
GRADE = "grade"
)
type User struct {
db.ModelWithUID
Name string `gorm:"type:char(32)"`
}
type UserClass struct {
db.Model
UserUID string `gorm:"type:char(32);index"`
ClassUID string `gorm:"type:char(32)"`
db.ModelUserPlace
ClassUID string `gorm:"type:char(32);index"`
}
type Class struct {
db.ModelWithUID
SchoolUID string `gorm:"type:char(32)"`
Grade string `gorm:"type:char(32)"`
Name string `gorm:"type:varchar(256)"`
db.ModelPlace
SchoolUID string `gorm:"type:char(32);index"`
Grade string `gorm:"type:varchar(32)"`
}
type School struct {
db.ModelWithUID
Name string `gorm:"type:varchar(256)"`
Address string `gorm:"type:varchar(4096)"`
Info string
db.ModelStreet
}
type Homework struct {
db.ModelWithUID
db.ModelContent
ClassUID string `gorm:"type:char(32);index"`
Content string
}
type models struct{ db.Models }
func (s models) Init(m *ice.Message, arg ...string) {
s.Models.Register(m, &User{}, &UserClass{}, &Class{}, &School{}, &Homework{})
}
func init() { ice.Cmd("web.team.education.jiaowuxitong.models", models{}) }
func init() { db.CmdModels("", &UserClass{}, &Class{}, &School{}, &Homework{}) }

View File

@ -1 +0,0 @@
CREATE DATABASE IF NOT EXISTS jiaowuxitong CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

View File

@ -1,59 +1,10 @@
package jiaowuxitong
import (
"shylinux.com/x/ice"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/toolkits"
import "shylinux.com/x/community/src/gonganxitong"
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type portal struct {
ice.Hash
Class Class
userClass userClass
export string `data:"true"`
short string `data:"index"`
field string `data:"time,name,icons,index,order,enable"`
list string `name:"list class_uid index uid auto" role:"void"`
classCreate string `name:"classCreate school_uid* grade* name*" role:"void"`
type Portal struct {
gonganxitong.Portal
placeCreate string `name:"placeCreate city_name* school_name* class_name* class_type:select grade*:select" role:"void"`
}
func (s portal) Inputs(m *ice.Message, arg ...string) {
s.Class.Inputs(m, arg...)
}
func (s portal) List(m *ice.Message, arg ...string) {
if m.Display(""); m.Option(model.USER_UID) == "" {
m.EchoInfoButton("please login", aaa.LOGIN)
} else if len(arg) == 0 {
m.Cmdy(s.userClass, s.userClass.MyClass, m.Option(model.USER_UID)).Action(s.ClassCreate, aaa.LOGIN).PushAction(s.ClassRemove)
kit.If(m.Length() == 0, func() { m.EchoInfoButton("please create class") })
m.StatusTimeCount(m.OptionSimple(model.USER_UID))
} else if len(arg) == 1 {
s.Hash.List(m, arg[1:]...).SortInt(mdb.ORDER)
} else if len(arg) == 2 {
m.Cmdy(arg[1]).PushAction().Action()
} else {
m.FieldsSetDetail()
m.Cmdy(arg[1], mdb.SELECT, "uid = ?", arg[2]).PushAction().Action()
}
}
func (s portal) ClassCreate(m *ice.Message, arg ...string) {
if !m.Cmdy(s.Class, s.Class.Create, arg).IsErr() {
m.Cmdy(s.userClass, s.userClass.Create, m.OptionSimple(model.USER_UID), model.CLASS_UID, m.Result())
}
}
func (s portal) ClassRemove(m *ice.Message, arg ...string) {
if !m.Cmdy(s.Class, s.Class.Remove, arg).IsErr() {
m.Cmdy(s.userClass, s.userClass.Remove, m.OptionSimple(model.USER_UID), model.CLASS_UID, m.Result())
}
}
func init() { ice.TeamCtxCmd(portal{}) }
func (s portal) Show(m *ice.Message, arg ...string) {
cmd := m.GetCommand()
m.Cmd(s, s.Create, mdb.NAME, cmd.Help, mdb.ICONS, cmd.Icon, ctx.INDEX, m.PrefixKey())
}
func init() { gonganxitong.PortalCmd(NewPortal(userClass{}, class{})) }

View File

@ -1,10 +0,0 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { msg.Dump(can) },
})
Volcanos(chat.ONACTION, {
login: function(event, can) {
can.user.input(event, can, ["user_uid"], function(data) {
can.misc.Cookie(can, data)
})
},
})

View File

@ -1,21 +1,33 @@
{
"school": "学校",
"class": "班级",
"portal": "教务系统", "member": "班级成员",
"homework": "家庭作业",
"user": "用户",
"classCreate": "创建班级",
"icons": {
"homework": "https://img.icons8.com/officel/80/homework.png"
},
"input": {
"migrate": "迁移",
"uid": "主键",
"info": "信息",
"address": "地址",
"grade": "入学年份",
"school_uid": "学校",
"school_name": "学校名称",
"class_uid": "班级",
"My Class": "我的班级",
"user_class_role": "用户角色",
"class_name": "班级名称",
"homework_uid": "作业",
"user_uid": "用户",
"user_name": "用户昵称"
"class_type": "班级类型",
"grade": "入学年份"
},
"value": {
"user_class_role": {
"visitor": "访客",
"creator": "创建人",
"teacher": "老师",
"student": "学生",
"parent": "家长",
"style": {
"creator": "danger",
"teacher": "danger"
}
},
"class_type": {
"term": "学期制",
"weekly": "周期性",
"step": "阶段性",
"free": "自由式"
}
}
}

View File

@ -1,13 +1,4 @@
chapter "教务系统"
refer `
日照市学校 http://jyj.rizhao.gov.cn/art/2019/4/29/art_33083_5757467.html
GORM https://gorm.io/docs/indexes.html
`
field web.code.db.models
field web.code.db.driver
field web.code.db.database
field web.code.mysql.client
field web.code.mysql.query args `mysql jiaowuxitong`
field web.code.sqlite.client args `var/db/web.code.db.sqlite.db`
field web.code.golang.runtime
field web.code.db.models

View File

@ -1,14 +1,44 @@
package jiaowuxitong
import "shylinux.com/x/ice"
import (
"shylinux.com/x/ice"
const (
GRADE = "grade"
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type school struct {
Table
create string `name:"create name* info address"`
modify string `name:"modify info" role:"tech"`
list string `name:"list city_name school_name auto" role:"void"`
authCreate string `name:"authCreate" role:"tech"`
}
func init() { ice.Cmd(prefixKey(), school{}) }
func (s school) FindOrCreateByName(m *ice.Message, arg ...string) {
if msg := m.Cmd(s, s.Select, model.NAME, arg[3], arg[0], arg[1]); msg.Length() == 0 {
msg := m.Cmd(s, s.Insert, model.NAME, arg[3], arg[0], arg[1])
arg[2], arg[3] = model.SCHOOL_UID, msg.Result()
} else {
arg[2], arg[3] = model.SCHOOL_UID, msg.Append(model.UID)
}
}
func (s school) Modify(m *ice.Message, arg ...string) {
s.Update(m, m.OptionSimple(model.INFO), m.OptionSimple(model.UID)...)
}
func (s school) List(m *ice.Message, arg ...string) {
if len(arg) == 0 {
s.CityList(m)
} else if msg := s.CityList(m.Spawn(), arg[0]); len(arg) == 1 {
s.Select(m, model.CITY_UID, msg.Append(model.UID))
} else if len(arg) == 2 {
s.Select(m, model.CITY_UID, msg.Append(model.UID), model.NAME, arg[1])
if m.Append(model.AUTH_UID) == "" {
m.EchoInfoButton("请申请学校认证", s.AuthCreate)
}
}
}
func (s school) AuthCreate(m *ice.Message, arg ...string) {
msg := s.CityCmd(m, s.Select, model.UID, m.Option(model.CITY_UID))
s.Table.AuthCreate(m, 5, msg.Append(model.AUTH_UID), m.OptionSimple(model.UID)...)
}
func init() { ice.TeamCtxCmd(school{}) }

View File

@ -1,7 +0,0 @@
package jiaowuxitong
import "shylinux.com/x/ice"
type user struct{ Table }
func init() { ice.Cmd(prefixKey(), user{}) }

View File

@ -1,22 +1,27 @@
package jiaowuxitong
import (
"shylinux.com/x/ice"
"shylinux.com/x/icebergs/base/mdb"
import "shylinux.com/x/ice"
type userClass struct{ Table }
func init() { ice.TeamCtxCmd(userClass{}) }
type UserClassRole int
const (
UserClassVisitor UserClassRole = iota
UserClassCreator
UserClassTeacher
UserClassStudent
UserClassParent
)
type userClass struct {
Table
Class Class
school school
create string `name:"create user_uid* class_uid*"`
var UserClassRoleList = map[UserClassRole]string{
UserClassVisitor: "visitor",
UserClassCreator: "creator",
UserClassTeacher: "teacher",
UserClassStudent: "student",
UserClassParent: "parent",
}
func (s userClass) Remove(m *ice.Message, arg ...string) {
}
func (s userClass) MyClass(m *ice.Message, arg ...string) {
m.Optionv(mdb.SELECT, "schools.name AS school_name", "grade", "classes.name AS class_name", "class_uid", "school_uid")
s.Show(m, s.Open(m).Select(m.Optionv(mdb.SELECT)).Joins(s.LeftJoin(s.Class)).Joins(s.LeftJoin(s.school)).Where("user_uid = ?", arg[0]))
}
func init() { ice.Cmd(prefixKey(), userClass{}) }
func (s UserClassRole) String() string { return UserClassRoleList[s] }

View File

@ -0,0 +1,41 @@
package kaoshixitong
import (
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/education/src/jiaowuxitong"
"shylinux.com/x/education/src/kaoshixitong/model"
)
type Table struct {
jiaowuxitong.Table
list string `name:"list exam_uid uid auto" role:"void"`
}
func (s Table) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
case model.USER_EXAM_ROLE:
s.InputsListRole(m, UserExamRoleList, arg...)
case model.EXAM_TYPE:
s.InputsList(m, ExamTypeList, arg...)
default:
s.Table.Inputs(m, arg...)
}
}
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
m.RewriteAppend(func(value, key string, index int) string {
switch key {
case model.USER_EXAM_ROLE:
value = UserExamRole(kit.Int(value)).String()
case model.EXAM_TYPE:
value = ExamType(kit.Int(value)).String()
}
return value
})
return s.Table.RewriteAppend(m)
}
type Tables struct{ Table }
func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {}

25
src/kaoshixitong/exam.go Normal file
View File

@ -0,0 +1,25 @@
package kaoshixitong
import "shylinux.com/x/ice"
type exam struct{ Table }
func init() { ice.TeamCtxCmd(exam{}) }
type ExamType int
const (
ExamTerm ExamType = iota
ExamWeekly
ExamStep
ExamFree
)
var ExamTypeList = map[ExamType]string{
ExamTerm: "term",
ExamWeekly: "weekly",
ExamStep: "step",
ExamFree: "free",
}
func (s ExamType) String() string { return ExamTypeList[s] }

View File

@ -0,0 +1,32 @@
package model
import "shylinux.com/x/mysql-story/src/db"
const (
UID = "uid"
NAME = "name"
INFO = "info"
TYPE = "type"
TITLE = "title"
CONTENT = "content"
USER_UID = "user_uid"
USER_EXAM_ROLE = "user_exam_role"
EXAM_UID = "exam_uid"
EXAM_TYPE = "exam_type"
QUESTION_UID = "question_uid"
)
type UserExam struct {
db.ModelUserPlace
ExamUID string `gorm:"type:char(32);index"`
}
type Exam struct {
db.ModelPlace
SchoolUID string `gorm:"type:char(32);index"`
}
type Question struct {
db.ModelContent
ExamUID string `gorm:"type:char(32);index"`
}
func init() { db.CmdModels("", &UserExam{}, &Exam{}, &Question{}) }

View File

@ -0,0 +1,13 @@
package kaoshixitong
import (
"shylinux.com/x/community/src/gonganxitong"
"shylinux.com/x/education/src/jiaowuxitong"
)
type Portal struct {
jiaowuxitong.Portal
placeCreate string `name:"placeCreate city_name* school_name* exam_name* exam_type:select" role:"void"`
}
func init() { gonganxitong.PortalCmd(Portal{Portal: jiaowuxitong.NewPortal(userExam{}, exam{})}) }

View File

@ -0,0 +1,32 @@
{
"portal": "考试系统",
"question": "试题",
"icons": {
"question": "https://img.icons8.com/officel/80/activity-grid.png"
},
"input": {
"My Exam": "我的考试",
"user_exam_role": "用户角色",
"exam_name": "考试名称",
"exam_type": "考试类型"
},
"value": {
"user_exam_role": {
"visitor": "访客",
"creator": "创建人",
"teacher": "老师",
"student": "学生",
"parent": "家长",
"style": {
"creator": "danger",
"teacher": "danger"
}
},
"exam_type": {
"term": "学期制",
"weekly": "周期性",
"step": "阶段性",
"free": "自由式"
}
}
}

View File

@ -0,0 +1,14 @@
package kaoshixitong
import "shylinux.com/x/ice"
type question struct {
Table
fields string `data:"title,content,user_uid"`
create string `name:"create title* content*" role:"teacher"`
remove string `name:"remove" role:"teacher"`
}
func (s question) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func init() { ice.TeamCtxCmd(question{}) }

View File

@ -0,0 +1,9 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { return [
{view: html.TITLE, list: [value.title]},
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.user_name]},
{view: html.OUTPUT, list: [value.content]},
] })
},
})

View File

@ -0,0 +1,15 @@
package kaoshixitong
import (
"shylinux.com/x/ice"
"shylinux.com/x/education/src/jiaowuxitong"
)
type userExam struct{ Table }
func init() { ice.TeamCtxCmd(userExam{}) }
type UserExamRole = jiaowuxitong.UserClassRole
var UserExamRoleList = jiaowuxitong.UserClassRoleList

View File

@ -3,9 +3,16 @@ package main
import (
"shylinux.com/x/ice"
_ "shylinux.com/x/community/src/renzhengshouquan"
_ "shylinux.com/x/education/src/jiaocaiziliao"
_ "shylinux.com/x/education/src/jiaowuxitong"
_ "shylinux.com/x/education/src/kaoshixitong"
_ "shylinux.com/x/education/src/zaixianketang"
)
func main() { print(ice.Run()) }
func init() { ice.Info.Titles = "Education" }
func init() {
ice.Info.CodeMain = "src/jiaowuxitong/portal.go"
ice.Info.NodeMain = "web.team.jiaowuxitong.portal"
}

View File

@ -1 +1,8 @@
title "20240724-education"
title "云教育"
refer `
官网 https://web.shylinux.com
源码 https://git.shylinux.com/web/education
应用 https://web.shylinux.com/s/20240724-education
`
field web.code.mysql.client
field web.code.mysql.query args `mysql jiaowuxitong`

6
src/option.go Normal file
View File

@ -0,0 +1,6 @@
package main
import (
_ "shylinux.com/x/ice/devops"
_ "shylinux.com/x/ice/portal"
)

View File

@ -0,0 +1,14 @@
package {{.Option "zone"}}
import "shylinux.com/x/ice"
type {{.Option "name"}} struct {
Table
fields string `data:"title,content,user_uid"`
create string `name:"create title* content*" role:"leader"`
remove string `name:"remove" role:"leader"`
}
func (s {{.Option "name"}}) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func init() { ice.TeamCtxCmd({{.Option "name"}}{}) }

View File

@ -0,0 +1,9 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { return [
{view: html.TITLE, list: [value.title||value.name||value.user_name]},
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.user_name]},
{view: html.OUTPUT, list: [value.content||value.info]},
] })
},
})

View File

@ -0,0 +1,41 @@
package zaixianketang
import (
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/education/src/jiaowuxitong"
"shylinux.com/x/education/src/zaixianketang/model"
)
type Table struct {
jiaowuxitong.Table
list string `name:"list course_uid uid auto" role:"void"`
}
func (s Table) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
case model.USER_COURSE_ROLE:
s.InputsListRole(m, UserCourseRoleList, arg...)
case model.COURSE_TYPE:
s.InputsList(m, CourseTypeList, arg...)
default:
s.Table.Inputs(m, arg...)
}
}
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
m.RewriteAppend(func(value, key string, index int) string {
switch key {
case model.USER_COURSE_ROLE:
value = UserCourseRole(kit.Int(value)).String()
case model.COURSE_TYPE:
value = CourseType(kit.Int(value)).String()
}
return value
})
return s.Table.RewriteAppend(m)
}
type Tables struct{ Table }
func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {}

View File

@ -0,0 +1,25 @@
package zaixianketang
import "shylinux.com/x/ice"
type course struct{ Table }
func init() { ice.TeamCtxCmd(course{}) }
type CourseType int
const (
CourseTerm CourseType = iota
CourseWeekly
CourseStep
CourseFree
)
var CourseTypeList = map[CourseType]string{
CourseTerm: "term",
CourseWeekly: "weekly",
CourseStep: "step",
CourseFree: "free",
}
func (s CourseType) String() string { return CourseTypeList[s] }

View File

@ -0,0 +1,14 @@
package zaixianketang
import "shylinux.com/x/ice"
type lesson struct {
Table
fields string `data:"title,content,user_uid"`
create string `name:"create title* content*" role:"teacher"`
remove string `name:"remove" role:"teacher"`
}
func (s lesson) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func init() { ice.TeamCtxCmd(lesson{}) }

View File

@ -0,0 +1,9 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { return [
{view: html.TITLE, list: [value.title]},
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.user_name]},
{view: html.OUTPUT, list: [value.content]},
] })
},
})

View File

@ -0,0 +1,32 @@
package model
import "shylinux.com/x/mysql-story/src/db"
const (
UID = "uid"
NAME = "name"
INFO = "info"
TYPE = "type"
TITLE = "title"
CONTENT = "content"
USER_UID = "user_uid"
USER_COURSE_ROLE = "user_course_role"
COURSE_UID = "course_uid"
COURSE_TYPE = "course_type"
LESSON_UID = "lesson_uid"
)
type UserCourse struct {
db.ModelUserPlace
CourseUID string `gorm:"type:char(32);index"`
}
type Course struct {
db.ModelPlace
SchoolUID string `gorm:"type:char(32);index"`
}
type Lesson struct {
db.ModelContent
CourseUID string `gorm:"type:char(32);index"`
}
func init() { db.CmdModels("", &UserCourse{}, &Course{}, &Lesson{}) }

View File

@ -0,0 +1,13 @@
package zaixianketang
import (
"shylinux.com/x/community/src/gonganxitong"
"shylinux.com/x/education/src/jiaowuxitong"
)
type Portal struct {
jiaowuxitong.Portal
placeCreate string `name:"placeCreate city_name* school_name* course_name* course_type:select" role:"void"`
}
func init() { gonganxitong.PortalCmd(Portal{Portal: jiaowuxitong.NewPortal(userCourse{}, course{})}) }

View File

@ -0,0 +1,32 @@
{
"portal": "在线课堂",
"lesson": "章节",
"icons": {
"lesson": "https://img.icons8.com/officel/80/activity-grid.png"
},
"input": {
"My Course": "我的课程",
"user_course_role": "用户角色",
"course_name": "课程名称",
"course_type": "课程类型"
},
"value": {
"user_course_role": {
"visitor": "访客",
"creator": "创建人",
"teacher": "老师",
"student": "学生",
"parent": "家长",
"style": {
"creator": "danger",
"teacher": "danger"
}
},
"course_type": {
"term": "学期制",
"weekly": "周期性",
"step": "阶段性",
"free": "自由式"
}
}
}

View File

@ -0,0 +1,15 @@
package zaixianketang
import (
"shylinux.com/x/ice"
"shylinux.com/x/education/src/jiaowuxitong"
)
type userCourse struct{ Table }
func init() { ice.TeamCtxCmd(userCourse{}) }
type UserCourseRole = jiaowuxitong.UserClassRole
var UserCourseRoleList = jiaowuxitong.UserClassRoleList

View File

@ -0,0 +1,247 @@
{
"061673d212ba9e5df86bfa236293b284": {
"meta": {
"index": "web.team.jiaowuxitong.school",
"time": "2024-08-12 07:38:04.549",
"type": "hash"
}
},
"098ffee875d4ef07e55cf6d08ad69dd5": {
"meta": {
"index": "web.team.jiaowuxitong.homework",
"time": "2024-08-12 08:56:55.400",
"type": "hash"
}
},
"0d55746b9fbdefff96b30c2aa36a48aa": {
"meta": {
"index": "web.team.jiaowuxitong.order",
"time": "2024-08-12 08:56:55.417",
"type": "hash"
}
},
"153c93456004ec2ca692d3bac2223167": {
"meta": {
"index": "web.team.gonganxitong.service",
"time": "2024-08-12 08:56:55.375",
"type": "hash"
}
},
"1a3d216c5a854d78045f3d2acacf567b": {
"meta": {
"index": "web.team.jiaowuxitong.apply",
"time": "2024-08-12 08:56:55.414",
"type": "hash"
}
},
"1cfd36a7b8906ba77781b4f85d0a6190": {
"meta": {
"index": "web.team.gonganxitong.sess",
"time": "2024-08-12 07:38:04.503",
"type": "hash"
}
},
"27c6988eeb07c78cbb49aa15c577cfa4": {
"meta": {
"index": "web.team.gonganxitong.apply",
"time": "2024-08-12 08:56:55.380",
"type": "hash"
}
},
"2f91065050f787e1e3b8aa5338ddd16b": {
"meta": {
"index": "web.chat.email.client",
"time": "2024-07-30 17:17:10.048",
"type": "hash"
}
},
"42eb12c2731727764a4e27397c526931": {
"meta": {
"index": "web.team.jiaowuxitong.member",
"time": "2024-08-12 18:02:39.198",
"type": "hash"
}
},
"4719bb45bb02427346be9634cc7a8fe3": {
"meta": {
"index": "web.team.jiaowuxitong.qrcode",
"time": "2024-08-12 18:02:39.191",
"type": "hash"
}
},
"4b1e97b62a44419c00caf65e297abd18": {
"meta": {
"index": "web.team.guanlixitong.portal",
"time": "2024-08-28 10:02:35.167",
"type": "hash"
}
},
"58724bdcc3cae3e26700cb3199e0602c": {
"meta": {
"index": "web.team.gonganxitong.placeUser",
"time": "2024-08-12 18:02:39.181",
"type": "hash"
}
},
"63657aabf3dd78593be0913f0ad65ea5": {
"meta": {
"index": "web.team.jiaowuxitong.portal",
"time": "2024-07-24 18:53:53.739",
"type": "hash"
}
},
"63c64bf8b1b104e2db3493f457fd48a7": {
"meta": {
"index": "aaa.asign",
"time": "2024-07-24 22:39:01.539",
"type": "hash"
}
},
"659d7461cb79bd9291f06450c0efa29f": {
"meta": {
"index": "web.team.gonganxitong.userPlace",
"time": "2024-08-12 07:38:04.521",
"type": "hash"
}
},
"6d3660df47c3f27241ea96c6274e4aeb": {
"meta": {
"index": "web.team.zaixianketang.portal",
"time": "2024-08-28 10:05:01.033",
"type": "hash"
}
},
"7e64183251edf9e9852903554f37a95c": {
"meta": {
"index": "web.team.jiaowuxitong.allow",
"time": "2024-08-16 13:04:15.972",
"type": "hash"
}
},
"8ce4dfb877e04e3be5144253fdd5d8ff": {
"meta": {
"index": "web.team.gonganxitong.allow",
"time": "2024-08-16 13:04:15.925",
"type": "hash"
}
},
"91dd0e9590d3021944f14f3ec8653beb": {
"meta": {
"index": "web.team.gonganxitong.order",
"time": "2024-08-12 08:56:55.373",
"type": "hash"
}
},
"954e1293098e7eba09d20c9869f5fbf0": {
"meta": {
"index": "web.team.jiaowuxitong.service",
"time": "2024-08-12 08:56:55.427",
"type": "hash"
}
},
"9da3f877eb2450316371f4edc1c93b26": {
"meta": {
"index": "web.team.gonganxitong.portal",
"time": "2024-07-28 20:20:57.077",
"type": "hash"
}
},
"b07b1f652f5b2557c0b20e813fcf99d2": {
"meta": {
"index": "web.team.gonganxitong.street",
"time": "2024-08-12 07:38:04.506",
"type": "hash"
}
},
"b70f3adb78da4c72cc24bcc180be708a": {
"meta": {
"index": "web.team.jiaowuxitong.class",
"time": "2024-08-12 07:38:04.533",
"type": "hash"
}
},
"ba00879066bbcea83e30cda292d28a91": {
"meta": {
"index": "web.team.gonganxitong.user",
"time": "2024-08-12 08:56:55.393",
"type": "hash"
}
},
"bdec92d5849b2a60a8811cff494f2391": {
"meta": {
"index": "web.team.gonganxitong.event",
"time": "2024-08-12 08:56:55.371",
"type": "hash"
}
},
"c14bbc5551aa7569bdfdd98235dcf3ee": {
"meta": {
"index": "web.team.renzhengshouquan.portal",
"time": "2024-08-31 11:18:46.747",
"type": "hash"
}
},
"c73251765fb5286cea9c8ceefb74530c": {
"meta": {
"index": "web.team.jiaowuxitong.event",
"time": "2024-08-12 08:56:55.409",
"type": "hash"
}
},
"d1ccc8e267dc41ab546592f93f99c014": {
"meta": {
"index": "web.team.zhengshuxitong.portal",
"time": "2024-08-28 10:02:35.303",
"type": "hash"
}
},
"d8443c1034bfe5917c52126a3306c328": {
"meta": {
"index": "web.team.gonganxitong.city",
"time": "2024-08-12 07:38:04.497",
"type": "hash"
}
},
"da32a6d81a6a7c21855e5320584fb9c2": {
"meta": {
"index": "web.team.kaoshixitong.portal",
"time": "2024-08-28 10:02:35.295",
"type": "hash"
}
},
"db760ea921c52736461c24f725e78137": {
"meta": {
"index": "web.team.jiaowuxitong.userClass",
"time": "2024-08-12 07:38:04.552",
"type": "hash"
}
},
"e2117b53c036a72fe7e4885449488a6f": {
"meta": {
"index": "web.team.gonganxitong.qrcode",
"time": "2024-08-12 18:02:39.172",
"type": "hash"
}
},
"eb7a60fb948cddf6d8b5381d062bb33f": {
"meta": {
"index": "web.team.jiaocaiziliao.portal",
"time": "2024-08-28 10:02:35.207",
"type": "hash"
}
},
"edd3a39c8a4fa35ae7c67117c56b28ae": {
"meta": {
"index": "web.team.gonganxitong.place",
"time": "2024-08-12 07:38:04.515",
"type": "hash"
}
},
"fd86aad80a667152781bb188fb1249a2": {
"meta": {
"index": "web.team.gonganxitong.email",
"time": "2024-08-12 18:02:39.170",
"type": "hash"
}
}
}

View File

@ -0,0 +1,34 @@
{
"3a5880f6ddd07eb9fe27b3cb3afb3f7e": {
"meta": {
"icon": "usr/icons/Calendar.png",
"index": "web.team.plan",
"name": "Calendar",
"time": "2024-07-24 17:52:06.920"
}
},
"adf694a4d378bcc855218c464fecb7d9": {
"meta": {
"icon": "usr/icons/Messages.png",
"index": "web.chat.message",
"name": "Messages",
"time": "2024-07-24 17:52:06.921"
}
},
"c6365efa0c8373fcf2bc8d44618ad782": {
"meta": {
"icon": "usr/icons/Books.png",
"index": "web.wiki.word",
"name": "Books",
"time": "2024-07-24 17:52:06.920"
}
},
"dc16860f819eb7f8ab85aee004508337": {
"meta": {
"icon": "usr/icons/Photos.png",
"index": "web.wiki.feel",
"name": "Photos",
"time": "2024-07-24 17:52:06.920"
}
}
}

View File

@ -0,0 +1,42 @@
{
"50de9bc68c93dc32d8c7c90593471760": {
"meta": {
"icon": "usr/icons/Safari.png",
"index": "web.chat.iframe",
"name": "Safari",
"time": "2024-07-24 17:52:06.923"
}
},
"514d8a494f087c0d549b9536c2ef3bd9": {
"meta": {
"icon": "usr/icons/Terminal.png",
"index": "web.code.xterm",
"name": "Terminal",
"time": "2024-07-24 17:52:06.924"
}
},
"a5255f07d36fc90fe78a719b0bdb943b": {
"meta": {
"icon": "usr/icons/vimer.png",
"index": "web.code.vimer",
"name": "vimer",
"time": "2024-07-24 17:52:06.925"
}
},
"ba9f11ecc3497d9993b933fdc2bd61e5": {
"meta": {
"icon": "usr/icons/git.png",
"index": "web.code.git.status",
"name": "git",
"time": "2024-07-24 17:52:06.924"
}
},
"d151508da8d36994e1635f7875594424": {
"meta": {
"icon": "usr/icons/Finder.png",
"index": "web.chat.macos.finder",
"name": "Finder",
"time": "2024-07-24 17:52:06.923"
}
}
}

View File

@ -0,0 +1,255 @@
{
"098ffee875d4ef07e55cf6d08ad69dd5": {
"meta": {
"index": "web.team.jiaowuxitong.homework",
"time": "2024-08-03 20:08:30.961"
}
},
"0d55746b9fbdefff96b30c2aa36a48aa": {
"meta": {
"index": "web.team.jiaowuxitong.order",
"time": "2024-08-03 19:21:19.588"
}
},
"1246961a1d880252ead389142acd037b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.gonganxitong.setting",
"name": "服务配置",
"order": "102",
"role": "leader,worker,server",
"time": "2024-09-21 11:54:00.700"
}
},
"153c93456004ec2ca692d3bac2223167": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.gonganxitong.service",
"name": "服务发现",
"order": "100",
"role": "creator",
"time": "2024-08-06 18:17:45.986"
}
},
"1a3d216c5a854d78045f3d2acacf567b": {
"meta": {
"index": "web.team.jiaowuxitong.apply",
"time": "2024-08-03 19:21:19.587"
}
},
"22574299a657140d473f0216b8d83710": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.gonganxitong.document",
"name": "在线文档",
"order": "93",
"role": "leader,worker",
"time": "2024-11-26 12:33:10.142"
}
},
"27c6988eeb07c78cbb49aa15c577cfa4": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.gonganxitong.apply",
"name": "权限申请",
"order": "3",
"role": "creator",
"time": "2024-08-03 15:09:01.515"
}
},
"2f80f1821b55a90555f630def20387be": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.gonganxitong.contract",
"name": "在线合同",
"order": "94",
"role": "leader,worker",
"time": "2024-11-26 12:33:10.136"
}
},
"3971882ea4f32c86386ad04b39d3e3d4": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.gonganxitong.market",
"name": "人民广场",
"order": "100",
"time": "2024-09-10 13:43:43.716"
}
},
"4719bb45bb02427346be9634cc7a8fe3": {
"meta": {
"index": "web.team.jiaowuxitong.qrcode",
"time": "2024-08-03 19:21:19.587"
}
},
"55ff6002f602327674ed6d4616023184": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.gonganxitong.goodslist",
"name": "在线商城",
"order": "91",
"role": "leader,worker",
"time": "2024-12-06 06:04:57.905"
}
},
"58724bdcc3cae3e26700cb3199e0602c": {
"meta": {
"index": "web.team.gonganxitong.placeUser",
"order": "5",
"role": "creator,landlord",
"time": "2024-08-03 15:09:01.516"
}
},
"882a999b4a72a9866d9e4eef110d335a": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.gonganxitong.photo",
"name": "在线相册",
"order": "95",
"role": "leader,worker",
"time": "2024-11-26 12:33:10.147"
}
},
"8ce4dfb877e04e3be5144253fdd5d8ff": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.gonganxitong.allow",
"name": "权限审批",
"order": "4",
"role": "creator",
"time": "2024-08-16 13:04:16.257"
}
},
"91dd0e9590d3021944f14f3ec8653beb": {
"meta": {
"index": "web.team.gonganxitong.order",
"order": "4",
"role": "creator",
"time": "2024-08-03 14:36:39.469"
}
},
"a53e36dcca735ef90b649fec546f520e": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.gonganxitong.credit",
"name": "用户名片",
"order": "102",
"time": "2024-09-30 09:55:22.712"
}
},
"a89a7c09e326295aaa7e7ea3d66fb28a": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.gonganxitong.support",
"name": "客服支持",
"order": "103",
"time": "2024-08-20 17:15:51.782"
}
},
"bdec92d5849b2a60a8811cff494f2391": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.gonganxitong.event",
"name": "事件流",
"order": "2",
"role": "creator",
"time": "2024-08-03 14:36:39.469"
}
},
"be08ca65be90feca325df128a06e440f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.gonganxitong.recent",
"name": "最近访问",
"order": "101",
"time": "2024-08-20 21:47:27.340"
}
},
"c1526ecd405021d6d47798c066bf70c0": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.gonganxitong.notice",
"name": "通知公告",
"order": "94",
"role": "leader",
"time": "2024-09-10 13:43:43.725"
}
},
"c73251765fb5286cea9c8ceefb74530c": {
"meta": {
"index": "web.team.jiaowuxitong.event",
"time": "2024-08-03 19:21:19.589"
}
},
"cbfda09ef49108ad9addf5117bcb54ce": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.gonganxitong.paymentlist",
"name": "在线支付",
"order": "92",
"role": "leader,worker",
"time": "2024-11-23 15:03:16.166"
}
},
"d86e4e63183c8fae4ceb50498b0bcfde": {
"meta": {
"icons": "https://img.icons8.com/officel/80/categorize.png",
"index": "web.team.gonganxitong.domain",
"name": "领域分类",
"time": "2024-09-10 13:43:43.718"
}
},
"e2117b53c036a72fe7e4885449488a6f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.gonganxitong.qrcode",
"name": "场景码",
"order": "1",
"role": "creator",
"time": "2024-08-03 14:32:27.153"
}
},
"f24b53f61852f58734f9ef8488705026": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.gonganxitong.meeting",
"name": "在线会议",
"order": "91",
"role": "leader,worker",
"time": "2024-11-22 14:32:17.504"
}
},
"f28c03b5bdbbe92ebc89dabca5e7d4de": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.gonganxitong.member",
"name": "组织成员",
"order": "80",
"role": "leader,worker,server",
"time": "2024-09-03 01:31:39.817"
}
},
"fd1884bbeb1f1a83f4e12f857bfe5b15": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.gonganxitong.message",
"name": "消息待办",
"order": "100",
"time": "2024-08-20 21:47:27.312"
}
},
"fd86aad80a667152781bb188fb1249a2": {
"meta": {
"icons": "https://img.icons8.com/officel/80/reading-confirmation.png",
"index": "web.team.gonganxitong.email",
"name": "邮箱配置",
"time": "2024-08-03 15:09:01.515"
}
}
}

View File

@ -0,0 +1,270 @@
{
"003dd6be7f666b93d80cf0f758880d84": {
"meta": {
"icons": "https://img.icons8.com/officel/80/purchase-order.png",
"index": "web.team.guanlixitong.procurement",
"name": "采购清单",
"time": "2024-11-10 11:04:01.150"
}
},
"030e2a53ca3561a0d0d123c133a88b59": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.guanlixitong.qrcode",
"name": "场景码",
"order": "90",
"role": "creator",
"time": "2024-08-28 10:02:38.188"
}
},
"04c6ed833d5cf77fef12937a0e58f2ba": {
"meta": {
"index": "web.team.guanlixitong.domain",
"time": "2024-09-10 13:43:43.709"
}
},
"0521e637b051a0e175a6070eded1bcef": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.guanlixitong.setting",
"name": "服务配置",
"order": "102",
"role": "leader,worker,server",
"time": "2024-09-21 11:54:00.695"
}
},
"057616b7366e1930ef4e4a921fe45f1f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.guanlixitong.service",
"name": "服务发现",
"order": "102",
"time": "2024-08-28 10:02:38.186"
}
},
"0721f4589e2e5f0a50b9088471e141a4": {
"meta": {
"icons": "https://img.icons8.com/officel/80/about-us-male--v2.png",
"index": "web.team.guanlixitong.employee",
"name": "员工信息",
"time": "2024-11-10 11:04:01.147"
}
},
"0d1831178568952bdf4f5c6b1587742b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/parse-from-clipboard.png",
"index": "web.team.guanlixitong.resume",
"name": "应聘简历",
"time": "2024-11-10 11:04:01.147"
}
},
"2fd80c581b69c9f67420e793804dbd9f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.guanlixitong.credit",
"name": "用户名片",
"order": "102",
"time": "2024-09-30 09:55:22.707"
}
},
"30bfa47cab4cd689901fd2e1b87eb235": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.guanlixitong.allow",
"name": "权限审批",
"order": "93",
"role": "creator",
"time": "2024-08-28 10:02:38.190"
}
},
"31e2929e94058b015eadf6e874f956a8": {
"meta": {
"icons": "https://img.icons8.com/officel/80/set-as-resume.png",
"index": "web.team.guanlixitong.recruitment",
"name": "招聘需求",
"time": "2024-11-10 11:04:01.140"
}
},
"5695d50b28872804a01d7c923ee91cd1": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.guanlixitong.member",
"name": "团队成员",
"order": "80",
"role": "leader,worker,server",
"time": "2024-08-28 10:02:38.182"
}
},
"78d29149539be88d7561b8e17bd65882": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.guanlixitong.market",
"name": "人民广场",
"order": "100",
"time": "2024-09-10 13:43:43.694"
}
},
"7c0eda0a842c79270ebf4917a0a07b9e": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.guanlixitong.goodslist",
"name": "在线商城",
"order": "91",
"role": "leader,worker",
"time": "2024-12-06 06:04:57.871"
}
},
"809b63c1819fc3ac1452e3b71889aec5": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.guanlixitong.notice",
"name": "通知公告",
"order": "94",
"role": "leader",
"time": "2024-09-10 13:43:43.696"
}
},
"8548d5ce3faee7bd508d2fb53d57f35b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.guanlixitong.photo",
"name": "在线相册",
"order": "95",
"role": "leader,worker",
"time": "2024-11-26 12:33:10.120"
}
},
"9c18032c5bc252f2986e1b20e7e77db7": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.guanlixitong.event",
"name": "事件流",
"order": "91",
"role": "creator",
"time": "2024-08-28 10:02:38.172"
}
},
"9fffbe375e2d2a1a8e6cb1f341e35b55": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.guanlixitong.recent",
"name": "最近访问",
"order": "101",
"time": "2024-08-28 10:02:38.176"
}
},
"ace6350cd663c693ddf47e81625c8a7a": {
"meta": {
"icons": "https://img.icons8.com/officel/80/meeting.png",
"index": "web.team.guanlixitong.interview",
"name": "招聘面试",
"time": "2024-11-10 11:04:01.138"
}
},
"ad9a805bfef319f0704842021bfc17b0": {
"meta": {
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.guanlixitong.conference",
"name": "在线会议",
"time": "2024-11-10 11:04:01.131"
}
},
"af39f30945dafa855548057f4dab3be4": {
"meta": {
"icons": "https://img.icons8.com/officel/80/warehouse.png",
"index": "web.team.guanlixitong.inventory",
"name": "库存物资",
"time": "2024-11-10 11:04:01.146"
}
},
"c27ad1df8aa9059d6018fb5add5ee546": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.guanlixitong.support",
"name": "客服支持",
"order": "103",
"time": "2024-08-28 10:02:38.192"
}
},
"c2fcc269f958a7b4b3bf0e37a2641ed8": {
"meta": {
"icons": "https://img.icons8.com/officel/80/office.png",
"index": "web.team.guanlixitong.equipment",
"name": "办公用品",
"time": "2024-11-10 11:04:01.149"
}
},
"c36d47e2611b0d1e7a14088bc3293d04": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.guanlixitong.apply",
"name": "权限申请",
"order": "92",
"role": "creator",
"time": "2024-08-28 10:02:38.175"
}
},
"cb1692a3c6b2d0d7da022787e411843b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.guanlixitong.paymentlist",
"name": "在线支付",
"order": "92",
"role": "leader,worker",
"time": "2024-11-23 15:03:16.130"
}
},
"d25f3f88261ead2a0079415a26aa6853": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.guanlixitong.message",
"name": "消息待办",
"order": "100",
"time": "2024-08-28 10:02:38.171"
}
},
"e2ade31e19fd70911169780be6757fa3": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.guanlixitong.contract",
"name": "在线合同",
"order": "94",
"role": "leader,worker",
"time": "2024-11-26 12:33:10.127"
}
},
"e595a0bbefbcfaa89f45dd875cc6fe0b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.guanlixitong.document",
"name": "在线文档",
"order": "93",
"role": "leader,worker",
"time": "2024-11-10 11:04:01.130"
}
},
"f10df497cdaa6ec48de612ae8cde4c9a": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.guanlixitong.meeting",
"name": "在线会议",
"order": "91",
"role": "leader,worker",
"time": "2024-11-22 14:32:17.479"
}
},
"fa5ff99e330772f88b929de7762a36f1": {
"meta": {
"icons": "https://img.icons8.com/officel/80/goal--v1.png",
"index": "web.team.guanlixitong.target",
"name": "目标计划",
"time": "2024-09-03 01:31:38.952"
}
}
}

View File

@ -0,0 +1,210 @@
{
"15db829c1f8a370e0552660dc7dfaefe": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.jiaocaiziliao.allow",
"name": "权限审批",
"order": "503",
"role": "teacher",
"time": "2024-08-28 10:02:38.221"
}
},
"2336db685278dbd1bea0323ca19092df": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.jiaocaiziliao.message",
"name": "消息待办",
"order": "902",
"time": "2024-08-28 10:02:38.200"
}
},
"336a95ad3daa41459416f205fcb2a214": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.jiaocaiziliao.apply",
"name": "权限申请",
"order": "502",
"role": "teacher",
"time": "2024-08-28 10:02:38.213"
}
},
"3bff71619be0601340aca525c5ce868c": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.jiaocaiziliao.event",
"name": "事件流",
"order": "504",
"role": "teacher",
"time": "2024-08-28 10:02:38.198"
}
},
"4925abd892867aba71564fd42887031b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.jiaocaiziliao.notice",
"name": "通知公告",
"order": "505",
"role": "teacher",
"time": "2024-09-10 13:43:43.677"
}
},
"539eee3f1fbcc6995d10a031a47746a3": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.jiaocaiziliao.market",
"name": "人民广场",
"order": "901",
"time": "2024-09-10 13:43:43.691"
}
},
"6bfff2e353b3d91b10bce46305d690dd": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.jiaocaiziliao.goodslist",
"name": "在线商城",
"order": "91",
"role": "teacher,student,parent",
"time": "2024-12-06 06:04:57.813"
}
},
"6c8fbcb20762b3f9e3786efb4748fd46": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.jiaocaiziliao.content",
"name": "目录索引",
"order": "1",
"time": "2024-12-19 09:45:37.155"
}
},
"7ba3fe1481c6eff54b701d7e0caeac68": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.jiaocaiziliao.credit",
"name": "用户名片",
"order": "101",
"time": "2024-09-30 09:55:22.694"
}
},
"7dcf10436f0a3f7d2df292986fda78c0": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.jiaocaiziliao.qrcode",
"name": "场景码",
"order": "501",
"role": "teacher",
"time": "2024-08-28 10:02:38.210"
}
},
"908f00d36bcefeedd146b686e9722adc": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.jiaocaiziliao.support",
"name": "客服支持",
"order": "905",
"time": "2024-08-28 10:02:38.205"
}
},
"a539e711473c35bbdb37923875a24368": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.jiaocaiziliao.recent",
"name": "最近访问",
"order": "903",
"time": "2024-08-28 10:02:38.202"
}
},
"a77adb6fd1068b2a1969e38b4977d4d4": {
"meta": {
"enable": "false",
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.jiaocaiziliao.document",
"name": "教材资料",
"order": "2",
"time": "2024-08-28 16:55:21.360"
}
},
"abe84c358a4dba0549e0e67559d0e20b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.jiaocaiziliao.contract",
"name": "在线合同",
"order": "95",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:10.103"
}
},
"bb835c881eef10c8f87022efeefc9fa8": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.jiaocaiziliao.photo",
"name": "在线相册",
"order": "96",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:10.011"
}
},
"c77029d5bf4c18bd5cdd7aece2203340": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.jiaocaiziliao.paymentlist",
"name": "在线支付",
"order": "92",
"role": "teacher,student,parent",
"time": "2024-11-23 15:03:16.129"
}
},
"d2d67fa16aa8ff85bd5acf61b1c632ee": {
"meta": {
"enable": "false",
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.jiaocaiziliao.official",
"name": "官方网站",
"order": "1",
"time": "2024-08-28 17:48:49.763"
}
},
"e3c2a7ae4469e3664b27184722b91a20": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.jiaocaiziliao.service",
"name": "服务发现",
"order": "904",
"time": "2024-08-28 10:02:38.223"
}
},
"ed068a7899b6e2526dfb5fd1485bfd78": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.jiaocaiziliao.meeting",
"name": "在线会议",
"order": "93",
"role": "teacher,student,parent",
"time": "2024-11-22 14:32:17.375"
}
},
"ed416856a9404f238884a165a23c5dac": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.jiaocaiziliao.member",
"name": "组织成员",
"order": "102",
"role": "teacher,student,parent",
"time": "2024-08-28 10:02:38.216"
}
},
"ee154f06abdbd01fc11e12c141132c2b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.jiaocaiziliao.setting",
"name": "服务配置",
"order": "103",
"role": "teacher,student,parent",
"time": "2024-09-21 11:54:00.619"
}
}
}

View File

@ -0,0 +1,201 @@
{
"04af779dc0ebd8bdc5740b9be92c2cc9": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.jiaowuxitong.paymentlist",
"name": "在线支付",
"order": "92",
"role": "teacher,student,parent",
"time": "2024-11-23 15:03:15.972"
}
},
"098ffee875d4ef07e55cf6d08ad69dd5": {
"meta": {
"icons": "https://img.icons8.com/officel/80/homework.png",
"index": "web.team.jiaowuxitong.homework",
"name": "家庭作业",
"order": "1",
"time": "2024-08-06 18:38:58.586"
}
},
"116845ea5df8b8f1f223b8b3e0b1394e": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.jiaowuxitong.meeting",
"name": "在线会议",
"order": "93",
"role": "teacher,student,parent",
"time": "2024-11-22 14:32:17.296"
}
},
"13a95e678955b3b68d6f80f8d30082a8": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.jiaowuxitong.market",
"name": "人民广场",
"order": "901",
"time": "2024-09-10 13:43:43.667"
}
},
"1a3d216c5a854d78045f3d2acacf567b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.jiaowuxitong.apply",
"name": "权限申请",
"order": "502",
"role": "teacher",
"time": "2024-08-04 23:01:00.755"
}
},
"2012c7765aca492cdec6427c9ab24ad9": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.jiaowuxitong.support",
"name": "客服支持",
"order": "905",
"time": "2024-08-20 21:24:20.298"
}
},
"42eb12c2731727764a4e27397c526931": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.jiaowuxitong.member",
"name": "班级成员",
"order": "102",
"role": "teacher,student,parent",
"time": "2024-08-12 08:56:55.724"
}
},
"4719bb45bb02427346be9634cc7a8fe3": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.jiaowuxitong.qrcode",
"name": "场景码",
"order": "501",
"role": "teacher",
"time": "2024-08-06 18:38:58.587"
}
},
"52f3109885fe93bb2ec4b91398d41c95": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.jiaowuxitong.contract",
"name": "在线合同",
"order": "95",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:10.007"
}
},
"581f5dc33ea999742aaf4b7550595cc2": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.jiaowuxitong.document",
"name": "在线文档",
"order": "94",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:10.001"
}
},
"698b334fabef9709512c03f5b4d4f1a7": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.jiaowuxitong.setting",
"name": "服务配置",
"order": "103",
"role": "teacher,student,parent",
"time": "2024-09-21 11:54:00.611"
}
},
"7e64183251edf9e9852903554f37a95c": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.jiaowuxitong.allow",
"name": "权限审批",
"order": "503",
"role": "teacher",
"time": "2024-08-16 13:04:16.305"
}
},
"954e1293098e7eba09d20c9869f5fbf0": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.jiaowuxitong.service",
"name": "服务发现",
"order": "904",
"time": "2024-08-06 18:36:54.304"
}
},
"bc62c9387327ce07d30e35e2f2b564e2": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.jiaowuxitong.photo",
"name": "在线相册",
"order": "96",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:10.005"
}
},
"c73251765fb5286cea9c8ceefb74530c": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.jiaowuxitong.event",
"name": "事件流",
"order": "504",
"role": "teacher",
"time": "2024-08-04 22:46:59.068"
}
},
"ce3cb04de8a07c7968c20a0f160f7802": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.jiaowuxitong.notice",
"name": "通知公告",
"order": "505",
"role": "teacher",
"time": "2024-09-10 13:43:43.668"
}
},
"dd4a880b9048d00d8d0f8b55562a1491": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.jiaowuxitong.message",
"name": "消息待办",
"order": "902",
"time": "2024-08-20 17:15:51.825"
}
},
"e99a6e230f804f8216e5a85898991859": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.jiaowuxitong.credit",
"name": "用户名片",
"order": "101",
"time": "2024-09-30 09:55:22.541"
}
},
"f17ffa67fa176278072580eefc7e9016": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.jiaowuxitong.recent",
"name": "最近访问",
"order": "903",
"time": "2024-08-20 17:15:51.804"
}
},
"f4c3e44e06eb233463bc38c941304a32": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.jiaowuxitong.goodslist",
"name": "在线商城",
"order": "91",
"role": "teacher,student,parent",
"time": "2024-12-06 06:04:57.618"
}
}
}

View File

@ -0,0 +1,201 @@
{
"08f66b55e6a2219682a786a354e0d073": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.kaoshixitong.recent",
"name": "最近访问",
"order": "903",
"time": "2024-08-28 10:02:38.299"
}
},
"0fda94e2f560bbb9cd38fa8bb60ce3f0": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.kaoshixitong.document",
"name": "在线文档",
"order": "94",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:09.926"
}
},
"196140f9e8da84f2e282ef27484c167b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.kaoshixitong.photo",
"name": "在线相册",
"order": "96",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:09.838"
}
},
"2c9ef2938b15e082f6adbbde61607e34": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.kaoshixitong.contract",
"name": "在线合同",
"order": "95",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:09.922"
}
},
"5032201844f165df1081070232eb79a7": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.kaoshixitong.setting",
"name": "服务配置",
"order": "103",
"role": "teacher,student,parent",
"time": "2024-09-21 11:54:00.543"
}
},
"57efe30a4d4c35dd54c05f7d9415e3af": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.kaoshixitong.member",
"name": "组织成员",
"order": "102",
"role": "teacher,student,parent",
"time": "2024-08-28 10:02:38.273"
}
},
"5f655544d32320bf45431d33a450e34f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.kaoshixitong.credit",
"name": "用户名片",
"order": "101",
"time": "2024-09-30 09:55:22.535"
}
},
"5fc02e6d3bcc0f31a750a38c169fbe08": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.kaoshixitong.service",
"name": "服务发现",
"order": "904",
"time": "2024-08-28 10:02:38.301"
}
},
"6791e4d7e2ee439b8beea5d1c147f251": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.kaoshixitong.event",
"name": "事件流",
"order": "504",
"role": "teacher",
"time": "2024-08-28 10:02:38.269"
}
},
"6baca7ca989ceb8127b38d5c446a2f6b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.kaoshixitong.goodslist",
"name": "在线商城",
"order": "91",
"role": "teacher,student,parent",
"time": "2024-12-06 06:04:57.578"
}
},
"72eb3fc89623556cfa348503328811e1": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.kaoshixitong.question",
"name": "试题",
"order": "1",
"time": "2024-08-30 09:39:07.245"
}
},
"ab6b14b549c110a29e13f8ea06e75b08": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.kaoshixitong.qrcode",
"name": "场景码",
"order": "501",
"role": "teacher",
"time": "2024-08-28 10:02:38.286"
}
},
"c1439837a1d97648477aed1e114c6864": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.kaoshixitong.meeting",
"name": "在线会议",
"order": "93",
"role": "teacher,student,parent",
"time": "2024-11-22 14:32:17.282"
}
},
"cdf2c57cac0587c7e60a6c01a4c90cb6": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.kaoshixitong.paymentlist",
"name": "在线支付",
"order": "92",
"role": "teacher,student,parent",
"time": "2024-11-23 15:03:15.885"
}
},
"d730c38222e45cbdce4729e8460803f2": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.kaoshixitong.apply",
"name": "权限申请",
"order": "502",
"role": "teacher",
"time": "2024-08-28 10:02:38.289"
}
},
"e40fff64cf054838cf918d2eeae1cae7": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.kaoshixitong.support",
"name": "客服支持",
"order": "905",
"time": "2024-08-28 10:02:38.291"
}
},
"e9a3399091dcb1200621462d2c488504": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.kaoshixitong.notice",
"name": "通知公告",
"order": "505",
"role": "teacher",
"time": "2024-09-10 13:43:43.657"
}
},
"eebb336a8af77dee7e8dfd5efb25834e": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.kaoshixitong.allow",
"name": "权限审批",
"order": "503",
"role": "teacher",
"time": "2024-08-28 10:02:38.271"
}
},
"ef743bae4606b1629bc7738a58d46d2e": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.kaoshixitong.market",
"name": "人民广场",
"order": "901",
"time": "2024-09-10 13:43:43.649"
}
},
"efa7c9dc8edbb8935ef079156d4f9071": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.kaoshixitong.message",
"name": "消息待办",
"order": "902",
"time": "2024-08-28 10:02:38.286"
}
}
}

View File

@ -0,0 +1,235 @@
{
"015b4784c16b63975824abbb3ff4ec9f": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.renzhengshouquan.photo",
"name": "在线相册",
"order": "95",
"role": "leader,worker",
"time": "2024-11-26 12:33:09.829"
}
},
"0d7f068029dbf7f9f0d307070cc3a79b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.renzhengshouquan.allow",
"name": "权限审批",
"order": "93",
"role": "creator",
"time": "2024-08-31 11:18:49.742"
}
},
"1c4fee90e6a7bdb8ab6f1ccb23f3273f": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.renzhengshouquan.document",
"name": "在线文档",
"order": "93",
"role": "leader,worker",
"time": "2024-11-26 12:33:09.830"
}
},
"1d15ae175ffe375630da1466417d2d5d": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.renzhengshouquan.contract",
"name": "在线合同",
"order": "94",
"role": "leader,worker",
"time": "2024-11-26 12:33:09.821"
}
},
"2a065e0a48b909ae79fbb3dd750e1eb5": {
"meta": {
"icons": "https://img.icons8.com/officel/80/id-verified.png",
"index": "web.team.renzhengshouquan.auth",
"name": "认证授权",
"order": "2",
"time": "2024-09-03 01:31:38.893"
}
},
"456d3a031a140d43f54690ea7203628d": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.renzhengshouquan.event",
"name": "事件流",
"order": "91",
"role": "creator",
"time": "2024-08-31 11:18:49.742"
}
},
"4cac9ca99ccb8db395f703434647f5f3": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.renzhengshouquan.setting",
"name": "服务配置",
"order": "102",
"role": "leader,worker,server",
"time": "2024-09-21 11:54:00.453"
}
},
"52fb3a7d85d879b638cc246850b236f6": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.renzhengshouquan.qrcode",
"name": "场景码",
"order": "90",
"role": "creator",
"time": "2024-08-31 11:18:49.729"
}
},
"6806548eeea33ee2118c520a60bc7e4b": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.renzhengshouquan.goodslist",
"name": "在线商城",
"order": "91",
"role": "leader,worker",
"time": "2024-12-06 06:04:57.464"
}
},
"732373815fa26c85ad04dd57ca57db39": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.renzhengshouquan.apply",
"name": "权限申请",
"order": "92",
"role": "creator",
"time": "2024-08-31 11:18:49.724"
}
},
"79283d05c3eb6007da9adcdc9751f68d": {
"meta": {
"icons": "https://img.icons8.com/officel/80/structured-document-data.png",
"index": "web.team.renzhengshouquan.admin",
"name": "管理后台",
"order": "4",
"role": "leader,worker",
"time": "2024-11-22 14:32:17.202"
}
},
"7a3a6cdf6eebd575950694ee28a8452e": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.renzhengshouquan.paymentlist",
"name": "在线支付",
"order": "92",
"role": "leader,worker",
"time": "2024-11-23 15:03:15.862"
}
},
"83f5f7ed321eeee6827add7a03947102": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.renzhengshouquan.profile",
"name": "用户名片",
"order": "3",
"time": "2024-09-24 09:16:42.564"
}
},
"89cf6f6cc69c13b7d541a0d61eae66e1": {
"meta": {
"icons": "https://img.icons8.com/officel/80/identification-documents--v2.png",
"index": "web.team.renzhengshouquan.cert",
"name": "上传证件",
"order": "1",
"time": "2024-09-03 01:31:38.901"
}
},
"9e52a4f0a1a8d35c14b40d14b0d9cff1": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.renzhengshouquan.message",
"name": "消息待办",
"order": "100",
"time": "2024-08-31 11:18:49.742"
}
},
"a040dfa713a6fa9533b3184244dbbb74": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.renzhengshouquan.support",
"name": "客服支持",
"order": "103",
"time": "2024-08-31 11:18:49.721"
}
},
"b0a322b1aeb3772b09477be3e47c8e89": {
"meta": {
"index": "web.team.renzhengshouquan.domain",
"time": "2024-09-10 13:43:43.638"
}
},
"bfecb55b11fe68186270fe1b4b8de8cf": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.renzhengshouquan.member",
"name": "组织成员",
"order": "80",
"role": "leader,worker,server",
"time": "2024-08-31 11:18:49.730"
}
},
"c9eeca8509b5b055149a5593312436cd": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.renzhengshouquan.meeting",
"name": "在线会议",
"order": "91",
"role": "leader,worker",
"time": "2024-11-22 14:32:17.214"
}
},
"d9f55b517f4b2579693523ed3b5bd088": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.renzhengshouquan.market",
"name": "人民广场",
"order": "100",
"time": "2024-09-10 13:43:43.631"
}
},
"e038450591f3c8e7babc0c21b1c6fa6d": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.renzhengshouquan.recent",
"name": "最近访问",
"order": "101",
"time": "2024-08-31 11:18:49.720"
}
},
"ecfb11fad5b4bdf21384e2e1ff571598": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.renzhengshouquan.notice",
"name": "通知公告",
"order": "94",
"role": "leader",
"time": "2024-09-10 13:43:43.625"
}
},
"f669e15e1c1c9da2bd3ea0c58abc0bd3": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.renzhengshouquan.credit",
"name": "用户名片",
"order": "102",
"time": "2024-09-30 09:55:22.466"
}
},
"f6b093d122ff3cec363b00093e0a6f19": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.renzhengshouquan.service",
"name": "服务发现",
"order": "102",
"time": "2024-08-31 11:18:49.744"
}
}
}

View File

@ -0,0 +1,208 @@
{
"2d7a4642b57423b336cc23d053eb347b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.zaixianketang.lesson",
"name": "章节",
"order": "1",
"time": "2024-09-01 22:47:28.665"
}
},
"495e018377ed5e64b3e263c5a3267838": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"index": "web.team.zaixianketang.paymentlist",
"name": "在线支付",
"order": "92",
"role": "teacher,student,parent",
"time": "2024-11-23 15:03:15.856"
}
},
"4ff09e3f86605fdc9050681f72470d33": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.zaixianketang.message",
"name": "消息待办",
"order": "902",
"time": "2024-08-28 10:05:04.044"
}
},
"52d02d396244389be96bbac3c543e582": {
"meta": {
"index": "web.team.zaixianketang.course",
"order": "1",
"time": "2024-09-01 22:47:28.669"
}
},
"5f5d90600e0e9b6fda3b93cc20646ac0": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.zaixianketang.meeting",
"name": "在线会议",
"order": "93",
"role": "teacher,student,parent",
"time": "2024-11-22 14:32:17.131"
}
},
"6af91cbf33dbd478e24c3db663e88dfd": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.zaixianketang.apply",
"name": "权限申请",
"order": "502",
"role": "teacher",
"time": "2024-08-28 10:05:04.026"
}
},
"7f48c17bb72a6f8d4ec3124adea5b614": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.zaixianketang.recent",
"name": "最近访问",
"order": "903",
"time": "2024-08-28 10:05:04.062"
}
},
"84ea0f117640271b4ad698eda385032e": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.zaixianketang.notice",
"name": "通知公告",
"order": "505",
"role": "teacher",
"time": "2024-09-10 13:43:43.617"
}
},
"96a41adc804b1ab7c4a434a31559f11a": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.zaixianketang.event",
"name": "事件流",
"order": "504",
"role": "teacher",
"time": "2024-08-28 10:05:04.038"
}
},
"a9fc4a9113824e792136b77fabacc27f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.zaixianketang.market",
"name": "人民广场",
"order": "901",
"time": "2024-09-10 13:43:43.611"
}
},
"ad52eb079362f84a80d1bd5c7d280e2c": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.zaixianketang.qrcode",
"name": "场景码",
"order": "501",
"role": "teacher",
"time": "2024-08-28 10:05:04.032"
}
},
"b38dbac90b9a2df29c66b476f77af5d4": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.zaixianketang.allow",
"name": "权限审批",
"order": "503",
"role": "teacher",
"time": "2024-08-28 10:05:04.060"
}
},
"bf50aebe8e103b7e627bc2222a4a7a43": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.zaixianketang.support",
"name": "客服支持",
"order": "905",
"time": "2024-08-28 10:05:04.048"
}
},
"c082a4be5e1bfc0486ea1ca4affb5ff8": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.zaixianketang.service",
"name": "服务发现",
"order": "904",
"time": "2024-08-28 10:05:04.057"
}
},
"c33b8c57fe151d427b07a7abf2467858": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.zaixianketang.credit",
"name": "用户名片",
"order": "101",
"time": "2024-09-30 09:55:22.445"
}
},
"d98f12c7f4ba013725dae268e146df20": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.zaixianketang.document",
"name": "在线文档",
"order": "94",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:09.816"
}
},
"dac365dbc25d4e52d6fac4430eff9a8f": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/online-store.png",
"index": "web.team.zaixianketang.goodslist",
"name": "在线商城",
"order": "91",
"role": "teacher,student,parent",
"time": "2024-12-06 06:04:57.346"
}
},
"e15b4e54765cfa21aa8352f58a1a69c9": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.zaixianketang.photo",
"name": "在线相册",
"order": "96",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:09.812"
}
},
"e734827be8647da9ea3371fec37274ae": {
"meta": {
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.zaixianketang.setting",
"name": "服务配置",
"order": "103",
"role": "teacher,student,parent",
"time": "2024-09-21 11:54:00.444"
}
},
"e96070f8e2cd3c83d9176f913b37f137": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/agreement.png",
"index": "web.team.zaixianketang.contract",
"name": "在线合同",
"order": "95",
"role": "teacher,student,parent",
"time": "2024-11-26 12:33:09.735"
}
},
"fcbe63f1af465ccde7cde55736373714": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.zaixianketang.member",
"name": "组织成员",
"order": "102",
"role": "teacher,student,parent",
"time": "2024-08-28 10:05:04.029"
}
}
}

View File

@ -0,0 +1,87 @@
{
"24de5532668ab3a9e24c802a81e11fe4": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.zhengshuxitong.event",
"name": "事件流",
"order": "91",
"role": "creator",
"time": "2024-08-28 10:02:38.322"
}
},
"268d8d472b09f84197b0a94b30a91945": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.zhengshuxitong.apply",
"name": "权限申请",
"order": "92",
"role": "creator",
"time": "2024-08-28 10:02:38.313"
}
},
"2b94e83c9bafa0ba7dbc81dee6da5500": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.zhengshuxitong.member",
"name": "场景成员",
"order": "80",
"time": "2024-08-28 10:02:38.339"
}
},
"51aa06b5b87673c3000a2f3118d988d2": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.zhengshuxitong.recent",
"name": "最近访问",
"order": "101",
"time": "2024-08-28 10:02:38.317"
}
},
"5ad3ad13a805b31a0c6a5b7cbc670e2e": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.zhengshuxitong.support",
"name": "客服支持",
"order": "103",
"time": "2024-08-28 10:02:38.310"
}
},
"6ff83d05acced62126f8e8ee1fc83b5b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.zhengshuxitong.qrcode",
"name": "场景码",
"order": "90",
"role": "creator",
"time": "2024-08-28 10:02:38.336"
}
},
"901a53a478ac910b90f0988df5a5bea7": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.zhengshuxitong.allow",
"name": "权限审批",
"order": "93",
"role": "creator",
"time": "2024-08-28 10:02:38.315"
}
},
"c02ca02b5d18c9313acae46b8377a0ad": {
"meta": {
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.zhengshuxitong.service",
"name": "服务发现",
"order": "102",
"time": "2024-08-28 10:02:38.319"
}
},
"d55dfc85a7cbe33f1956590be513c478": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.zhengshuxitong.message",
"name": "消息待办",
"order": "100",
"time": "2024-08-28 10:02:38.307"
}
}
}