Compare commits

..

No commits in common. "master" and "v0.0.5" have entirely different histories.

57 changed files with 361 additions and 2490 deletions

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2017-2025 shylinux
Copyright (c) 2020 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

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

View File

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

View File

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

46
go.mod
View File

@ -1,48 +1,28 @@
module shylinux.com/x/education
go 1.21
go 1.20
require (
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
shylinux.com/x/community v0.0.3
shylinux.com/x/golang-story v0.0.24
shylinux.com/x/ice v1.5.43
shylinux.com/x/icebergs v1.9.41
shylinux.com/x/mysql-story v0.6.16
shylinux.com/x/toolkits v1.0.14
)
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/go-sql-driver/mysql v1.7.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
golang.org/x/text v0.16.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
gorm.io/gorm v1.25.11 // indirect
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
)

219
go.sum
View File

@ -1,16 +1,13 @@
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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY=
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
github.com/bgould/http v0.0.0-20190627042742-d268792bdee7/go.mod h1:BTqvVegvwifopl4KTEDth6Zezs9eR+lCWhvGKvkxJHE=
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/dhowden/itl v0.0.0-20170329215456-9fbe21093131/go.mod h1:eVWQJVQ67aMvYhpkDwaH2Goy2vo6v8JCMfGXfQ9sPtw=
github.com/dhowden/plist v0.0.0-20141002110153-5db6e0d9931a/go.mod h1:sLjdR6uwx3L6/Py8F+QgAfeiuY87xuYGwCDqRFrvCzw=
github.com/dhowden/tag v0.0.0-20240417053706-3d75831295e8/go.mod h1:apkPC/CR3s48O2D7Y++n1XWEpgPNNCjXYga3PPbJe2E=
github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts=
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=
@ -19,185 +16,201 @@ github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1X
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/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s=
github.com/glerchundi/subcommands v0.0.0-20181212083838-923a6ccb11f8/go.mod h1:r0g3O7Y5lrWXgDfcFBRgnAKzjmPgTzwoMC2ieB345FY=
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
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/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/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/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/hajimehoshi/go-jisx0208 v1.0.0/go.mod h1:yYxEStHL7lt9uL+AbdWgW9gBumwieDoZCiB1f/0X0as=
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/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/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys=
github.com/peterbourgon/ff/v3 v3.1.2/go.mod h1:XNJLY8EIl6MjMVjBS4F0+G0LYoAqs0DTa4rmHHukKDE=
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/sago35/go-bdf v0.0.0-20200313142241-6c17821c91c4/go.mod h1:rOebXGuMLsXhZAC6mF/TjxONsm45498ZyzVhel++6KM=
github.com/saltosystems/winrt-go v0.0.0-20240509164145-4f7860a3bd2b/go.mod h1:CIltaIm7qaANUIvzr0Vmz71lmQMAIbGJ7cvgzX7FMfA=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/soypat/cyw43439 v0.0.0-20240609122733-da9153086796/go.mod h1:1Otjk6PRhfzfcVHeWMEeku/VntFqWghUwuSQyivb2vE=
github.com/soypat/natiu-mqtt v0.5.1/go.mod h1:xEta+cwop9izVCW7xOx2W+ct9PRMqr0gNVkvBPnQTc4=
github.com/soypat/saleae v0.0.0-20230402180913-3584b7515dae/go.mod h1:9SV+w6E9YK/BePxdxYGXthkrRztHJCQlojWOjAxW3M4=
github.com/soypat/seqs v0.0.0-20240527012110-1201bab640ef/go.mod h1:oCVCNGCHMKoBj97Zp9znLbQ1nHxpkmOY9X+UAGzOxc8=
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/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
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.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
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/tdakkota/win32metadata v0.1.0/go.mod h1:77e6YvX0LIVW+O81fhWLnXAxxcyu/wdZdG7iwed7Fyk=
github.com/tinygo-org/cbgo v0.0.4/go.mod h1:7+HgWIHd4nbAz0ESjGlJ1/v9LDU1Ox8MGzP9mah/fLk=
github.com/tinygo-org/pio v0.0.0-20231216154340-cd888eb58899/go.mod h1:LU7Dw00NJ+N86QkeTGjMLNkYcEYMor6wTDpTCu0EaH8=
github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY=
github.com/valyala/fastjson v1.6.3/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.5.5/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
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.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
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/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM=
golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20220617043117-41969df76e82/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.11.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-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
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/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
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-20210220032951-036812b2e83c/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-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/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-20211019181941-9d821ace8654/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-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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.1.0/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.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
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.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
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/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
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.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
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 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
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.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
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.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
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.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=
gorm.io/gorm v1.25.11 h1:/Wfyg1B/je1hnDx3sMkX+gAlxrlZpn6X0BXRlwXlvHg=
gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
shylinux.com/x/community v0.0.3 h1:WWytDBo4QV6vY73OnnCP7o41dGGNVN+er7zNYkABUPE=
shylinux.com/x/community v0.0.3/go.mod h1:f/FIWPGaDLvnrpdpG5c9Ttj0hZzV51RtOOnW5IYk3IA=
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/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/golang-story v0.0.24 h1:0gzXdo4sIw9LxoNaEOueEDKC+Cb0IGcFAi44vigoVf8=
shylinux.com/x/golang-story v0.0.24/go.mod h1:G0WEOJ0gCYR2tOs1ggyMBBrUMqJEgJjyvdFjN3VpNoM=
shylinux.com/x/ice v1.5.41/go.mod h1:hMhVMhUlsimwFcsPIH+J/tO8O8I0WEqg1NYyqdhULxE=
shylinux.com/x/ice v1.5.43 h1:2hwDFSmiM4ClqsQ8OaCii9REeUJelfcYLxW7iPWUcgc=
shylinux.com/x/ice v1.5.43/go.mod h1:m5PPsVula2aqFHp5kZX3talhwZ4u4zsLqqU0X3cesc0=
shylinux.com/x/icebergs v1.9.39/go.mod h1:rUqDj1pzd6uPj7+klEn+doqXiWlb/24/batRyBB5ppo=
shylinux.com/x/icebergs v1.9.41 h1:aFeaTb4WHoowkKTfIwohFiWTgMaq5C8N2fB/Qvrj2nU=
shylinux.com/x/icebergs v1.9.41/go.mod h1:/BcFEB/6Dd70Owmb3wsA9NYShHQwmSH74xn9pNudRMg=
shylinux.com/x/mysql-story v0.6.16 h1:rY6SQBRWmMgTMM/CBCVbK4IMPPVgXgtp44ON7px8FU4=
shylinux.com/x/mysql-story v0.6.16/go.mod h1:GTvoeL4r0PYEtZomPQgnndxSxHIZzPdrWkbQmplmn5o=
shylinux.com/x/toolkits v0.7.10/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/toolkits v1.0.13/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.14 h1:ysp9Yl0YjVqtGn/KXQnKfjn3/3RYgVdll2WOYUscd9c=
shylinux.com/x/toolkits v1.0.14/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=
tinygo.org/x/bluetooth v0.10.0/go.mod h1:t/Vm2a/rslsBoqFQKCBsWQw/cmRicQq+8Tl3tj5RCRI=
tinygo.org/x/drivers v0.14.0/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
tinygo.org/x/drivers v0.15.1/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
tinygo.org/x/drivers v0.16.0/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
tinygo.org/x/drivers v0.19.0/go.mod h1:uJD/l1qWzxzLx+vcxaW0eY464N5RAgFi1zTVzASFdqI=
tinygo.org/x/drivers v0.25.0/go.mod h1:v+mXaA4cgpz/YZJ3ZPm/86bYQJAXTaYtMkHlVwbodbw=
tinygo.org/x/drivers v0.26.1-0.20230922160320-ed51435c2ef6/go.mod h1:X7utcg3yfFUFuKLOMTZD56eztXMjpkcf8OHldfTBsjw=
tinygo.org/x/tinyfont v0.2.1/go.mod h1:eLqnYSrFRjt5STxWaMeOWJTzrKhXqpWw7nU3bPfKOAM=
tinygo.org/x/tinyfont v0.3.0/go.mod h1:+TV5q0KpwSGRWnN+ITijsIhrWYJkoUCp9MYELjKpAXk=
tinygo.org/x/tinyfont v0.4.0/go.mod h1:7nVj3j3geqBoPDzpFukAhF1C8AP9YocMsZy0HSAcGCA=
tinygo.org/x/tinyfs v0.1.0/go.mod h1:ysc8Y92iHfhTXeyEM9+c7zviUQ4fN9UCFgSOFfMWv20=
tinygo.org/x/tinyterm v0.1.0/go.mod h1:/DDhNnGwNF2/tNgHywvyZuCGnbH3ov49Z/6e8LPLRR4=
tinygo.org/x/tinyterm v0.3.0/go.mod h1:F1pQjxEwNZQIc5czeJSBtk57ucEvbR4u7vHaLhWhHtg=

View File

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

View File

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

View File

@ -1,45 +0,0 @@
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

@ -1,18 +0,0 @@
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

@ -1,28 +0,0 @@
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

@ -1,11 +0,0 @@
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

@ -1,21 +0,0 @@
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

@ -1,46 +0,0 @@
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

@ -1,19 +0,0 @@
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

@ -1,13 +0,0 @@
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

@ -1,38 +0,0 @@
{
"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

@ -1,15 +0,0 @@
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

@ -1,8 +1,6 @@
package jiaowuxitong
import (
"strconv"
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
@ -17,47 +15,48 @@ type Table struct {
func (s Table) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
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])
for k, v := range ClassTypeList {
m.Push(arg[0], k).Push(model.NAME, v)
}
m.SortInt(arg[0]).DisplayInputKeyNameIconTitle()
case model.USER_CLASS_ROLE:
for k, v := range UserClassRoleList {
if k != UserClassCreator && k != UserClassVisitor {
m.Push(arg[0], k).Push(model.NAME, v)
}
}
m.SortInt(arg[0]).DisplayInputKeyNameIconTitle()
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 {
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()
}
kit.If(key == model.CLASS_TYPE, func() { value = ClassType(kit.Int(value)).String() })
kit.If(key == model.USER_CLASS_ROLE, func() { value = UserClassRole(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 ...UserClassRole) bool {
kit.If(len(arg) == 0, func() { arg = append(arg, UserClassTeacher) })
role := UserClassRole(kit.Int(m.Cmd(userClass{}, s.Select, m.OptionSimple(model.CLASS_UID, model.USER_UID)).Append(model.ROLE)))
for _, v := range append(arg, UserClassCreator) {
if role == v {
return true
}
}
return !m.WarnNotRight(true, role.String())
}
func (s Table) CheckRole(m *ice.Message, arg ...string) {
role := UserClassRole(s.UserPlaceRole(m))
m.WarnNotRight(!kit.IsIn(role.String(), append(arg, UserClassCreator.String())...), role.String())
func (s Table) recordEvent(m *ice.Message, info string, arg ...string) *ice.Message {
s.Table.RecordEvent(m, m.Option(model.CLASS_UID), info, kit.Select(m.Option(model.UID), arg, 0))
return m
}
type Tables struct{ Table }
type Tables struct {
Table
portal string `data:"true"`
}
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

@ -1,14 +1,28 @@
package jiaowuxitong
import "shylinux.com/x/ice"
import (
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type homework struct {
Table
fields string `data:"title,content,user_uid"`
create string `name:"create title* content*" role:"teacher"`
remove string `name:"remove" role:"teacher"`
class class
userClass userClass
portal string `data:"true"`
create string `name:"create title* content*" role:"void"`
}
func (s homework) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func (s homework) Create(m *ice.Message, arg ...string) {
if s.checkRole(m) {
s.Table.Create(m, kit.Simple(arg, m.OptionSimple(model.CLASS_UID, model.USER_UID))...)
s.recordEvent(m, m.Trans("create homework ", "创建家庭作业 ")+m.Option(model.TITLE), m.Result())
}
}
func (s homework) List(m *ice.Message, arg ...string) {
s.TablesWithRole(m, arg, s.userClass, s.class, s, model.TITLE, model.CONTENT).Display("")
}
func init() { ice.TeamCtxCmd(homework{}) }

View File

@ -1,9 +1,13 @@
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]},
if (msg.IsDetail()) { var value = msg.TableDetail(); msg.Option("_share_title", value.title), msg.Option("_share_content", value.content) }
can.onimport.itemcards(can, msg, function(value) { return [
{view: html.TITLE, list: [{text: value.title}]},
{view: html.STATUS, list: [
{text: value.uid.slice(0, 6)}, {text: can.base.TimeTrim(value.created_at)},
{text: value.user_name}, {text: [can.user.transValue(can, value, "user_class_role"), "", [aaa.ROLE, can.onimport.roleStyle(can, value, "user_class_role")]]},
]},
{view: html.OUTPUT, list: [{text: value.content}]},
] })
},
})

View File

@ -5,37 +5,46 @@ import "shylinux.com/x/mysql-story/src/db"
const (
UID = "uid"
NAME = "name"
INFO = "info"
TYPE = "type"
ROLE = "role"
TITLE = "title"
CONTENT = "content"
USER_UID = "user_uid"
USER_CLASS_ROLE = "user_class_role"
CLASS_UID = "class_uid"
CLASS_NAME = "class_name"
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 UserClass struct {
db.ModelUserPlace
db.ModelWithUID
UserUID string `gorm:"type:char(32);index"`
ClassUID string `gorm:"type:char(32);index"`
Role uint8
}
type Class struct {
db.ModelPlace
db.ModelWithUID
SchoolUID string `gorm:"type:char(32);index"`
Grade string `gorm:"type:varchar(32)"`
Grade string `gorm:"type:char(32)"`
Name string `gorm:"type:char(64)"`
Type uint8
}
type School struct {
db.ModelStreet
db.ModelWithUID
CityUID string `gorm:"type:char(32);index:idx_city"`
Name string `gorm:"type:char(64);index:idx_city"`
Info string
}
type Homework struct {
db.ModelContent
db.ModelWithUID
ClassUID string `gorm:"type:char(32);index"`
UserUID string `gorm:"type:char(32)"`
Title string `gorm:"type:char(64)"`
Content string
}
func init() { db.CmdModels("", &UserClass{}, &Class{}, &School{}, &Homework{}) }

View File

@ -4,7 +4,11 @@ import "shylinux.com/x/community/src/gonganxitong"
type Portal struct {
gonganxitong.Portal
placeCreate string `name:"placeCreate city_name* school_name* class_name* class_type:select grade*:select" role:"void"`
name string `data:"教务系统"`
list string `name:"list class_uid index uid auto" role:"void"`
placeCreate string `name:"placeCreate city_name* school_name* grade*:select class_name*" role:"void"`
}
func init() { gonganxitong.PortalCmd(NewPortal(userClass{}, class{})) }
func init() {
gonganxitong.PortalCmd(Portal{Portal: gonganxitong.NewPortal(userClass{}, class{}, school{})})
}

View File

@ -1,5 +1,8 @@
{
"portal": "教务系统", "member": "班级成员",
"portal": "教务系统",
"placeCreate": "创建班级",
"placeRemove": "删除班级",
"member": "班级成员",
"homework": "家庭作业",
"icons": {
"homework": "https://img.icons8.com/officel/80/homework.png"
@ -9,12 +12,13 @@
"user_class_role": "用户角色",
"class_name": "班级名称",
"class_type": "班级类型",
"school_name": "学校名称",
"grade": "入学年份"
},
"value": {
"user_class_role": {
"visitor": "访客",
"creator": "创建人",
"visitor": "访客",
"teacher": "老师",
"student": "学生",
"parent": "家长",

View File

@ -1,4 +1,3 @@
chapter "教务系统"
field web.code.mysql.client
field web.code.mysql.query args `mysql jiaowuxitong`
field web.code.db.models
field web.code.mysql.query args `mysql jiaowuxitong`

View File

@ -6,39 +6,15 @@ import (
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type school struct {
Table
modify string `name:"modify info" role:"tech"`
list string `name:"list city_name school_name auto" role:"void"`
authCreate string `name:"authCreate" role:"tech"`
}
type school struct{ Table }
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])
msg := m.Cmd(s, s.Create, 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,24 +1,61 @@
package jiaowuxitong
import "shylinux.com/x/ice"
import (
"shylinux.com/x/ice"
type userClass struct{ Table }
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type userClass struct {
Table
class class
school school
}
func (s userClass) User(m *ice.Message, arg ...string) {
s.FieldsWithCreatedAT(m, s, model.USER_UID, model.ROLE)
if len(arg) == 1 {
s.Select(m, model.CLASS_UID, arg[0])
} else if len(arg) == 2 {
s.SelectDetail(m, model.CLASS_UID, arg[0], model.UID, arg[1])
} else {
return
}
m.RenameAppend(model.ROLE, model.USER_CLASS_ROLE)
s.SelectJoinUser(m)
s.RewriteAppend(m)
}
func (s userClass) List(m *ice.Message, arg ...string) {
s.Tables(m, s.class, s.school).FieldsWithCreatedAT(m, s,
model.CLASS_NAME, model.CLASS_TYPE, model.USER_CLASS_ROLE,
model.CITY_UID, model.SCHOOL_NAME, model.GRADE, model.CLASS_UID,
)
if len(arg) == 1 {
s.Select(m, model.USER_UID, arg[0])
} else if len(arg) == 2 {
s.SelectDetail(m, model.USER_UID, arg[0], s.Key(s, model.CLASS_UID), arg[1])
} else {
return
}
s.SelectJoinCity(m)
s.RewriteAppend(m)
}
func init() { ice.TeamCtxCmd(userClass{}) }
type UserClassRole int
const (
UserClassVisitor UserClassRole = iota
UserClassCreator
UserClassCreator UserClassRole = iota
UserClassVisitor
UserClassTeacher
UserClassStudent
UserClassParent
)
var UserClassRoleList = map[UserClassRole]string{
UserClassVisitor: "visitor",
UserClassCreator: "creator",
UserClassVisitor: "visitor",
UserClassTeacher: "teacher",
UserClassStudent: "student",
UserClassParent: "parent",

View File

@ -1,41 +0,0 @@
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) {}

View File

@ -1,25 +0,0 @@
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

@ -1,32 +0,0 @@
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

@ -1,13 +0,0 @@
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

@ -1,32 +0,0 @@
{
"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

@ -1,14 +0,0 @@
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

@ -1,9 +0,0 @@
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,15 +0,0 @@
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,16 +3,9 @@ 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.CodeMain = "src/jiaowuxitong/portal.go"
ice.Info.NodeMain = "web.team.jiaowuxitong.portal"
}
func init() { ice.Info.Titles = "云教育" }

View File

@ -1,8 +1 @@
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`
title "20240724-education"

View File

@ -2,5 +2,7 @@ package main
import (
_ "shylinux.com/x/ice/devops"
_ "shylinux.com/x/ice/portal"
_ "shylinux.com/x/golang-story/src/runtime"
_ "shylinux.com/x/mysql-story/src/db/mysql"
)

View File

@ -4,11 +4,10 @@ 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 (s {{.Option "name"}}) List(m *ice.Message, arg ...string) {
s.Table.List(m, arg...)
}
func init() { ice.TeamCtxCmd({{.Option "name"}}{}) }

View File

@ -1,9 +0,0 @@
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

@ -1,41 +0,0 @@
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

@ -1,25 +0,0 @@
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

@ -1,14 +0,0 @@
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

@ -1,9 +0,0 @@
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,32 +0,0 @@
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

@ -1,13 +0,0 @@
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

@ -1,32 +0,0 @@
{
"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

@ -1,15 +0,0 @@
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

@ -69,13 +69,6 @@
"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",
@ -104,27 +97,6 @@
"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",
@ -174,13 +146,6 @@
"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",
@ -188,13 +153,6 @@
"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",
@ -202,13 +160,6 @@
"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",
@ -223,13 +174,6 @@
"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",

View File

@ -1,252 +1,104 @@
{
"098ffee875d4ef07e55cf6d08ad69dd5": {
"meta": {
"icons": "https://img.icons8.com/officel/80/homework.png",
"index": "web.team.jiaowuxitong.homework",
"name": "家庭作业",
"time": "2024-08-03 20:08:30.961"
}
},
"0d55746b9fbdefff96b30c2aa36a48aa": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.jiaowuxitong.order",
"name": "审批单",
"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",
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"index": "web.team.gonganxitong.service",
"name": "服务发现",
"order": "100",
"role": "creator",
"time": "2024-08-06 18:17:45.986"
}
},
"1a3d216c5a854d78045f3d2acacf567b": {
"meta": {
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.jiaowuxitong.apply",
"name": "申请单",
"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",
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"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": {
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.jiaowuxitong.qrcode",
"name": "班级码",
"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": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"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": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"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",
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"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": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.jiaowuxitong.event",
"name": "事件流",
"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",
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"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",
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"index": "web.team.gonganxitong.email",
"name": "邮箱配置",
"time": "2024-08-03 15:09:01.515"

View File

@ -1,270 +0,0 @@
{
"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

@ -1,210 +0,0 @@
{
"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

@ -1,201 +1,99 @@
{
"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": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/homework.png",
"index": "web.team.jiaowuxitong.homework",
"name": "家庭作业",
"order": "1",
"order": "6",
"time": "2024-08-06 18:38:58.586"
}
},
"116845ea5df8b8f1f223b8b3e0b1394e": {
"0d55746b9fbdefff96b30c2aa36a48aa": {
"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"
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.jiaowuxitong.order",
"name": "权限审批",
"order": "4",
"role": "creator,teacher",
"time": "2024-08-04 23:10:14.970"
}
},
"1a3d216c5a854d78045f3d2acacf567b": {
"meta": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.jiaowuxitong.apply",
"name": "权限申请",
"order": "502",
"role": "teacher",
"order": "3",
"role": "creator,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": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.jiaowuxitong.member",
"name": "班级成员",
"order": "102",
"role": "teacher,student,parent",
"order": "5",
"role": "creator,teacher,student,parent",
"time": "2024-08-12 08:56:55.724"
}
},
"4719bb45bb02427346be9634cc7a8fe3": {
"meta": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.jiaowuxitong.qrcode",
"name": "场景码",
"order": "501",
"role": "teacher",
"order": "1",
"role": "creator,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": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.jiaowuxitong.service",
"name": "服务发现",
"order": "904",
"name": "系统服务",
"order": "100",
"role": "creator",
"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": {
"_target": [
"2fb03f13580ed033e441e1f5dd35b783"
],
"enable": "true",
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.jiaowuxitong.event",
"name": "事件流",
"order": "504",
"role": "teacher",
"order": "2",
"role": "creator,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

@ -1,201 +0,0 @@
{
"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

@ -1,235 +0,0 @@
{
"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

@ -1,208 +0,0 @@
{
"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

@ -1,87 +0,0 @@
{
"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"
}
}
}