Compare commits

...

84 Commits

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

View File

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

View File

@ -1,12 +1,11 @@
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 ${option} ${version} ${binpack} && ./${binarys} forever restart &>/dev/null
go build ${flags} -o ${binarys} src/main.go src/option.go ${version} ${binpack} && ./${binarys} forever restart &>/dev/null
def:
@[ -f ${version} ] || echo "package main">${version}

View File

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

View File

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

54
go.mod
View File

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

219
go.sum
View File

@ -1,13 +1,16 @@
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=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw=
github.com/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw=
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/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/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
github.com/emersion/go-message v0.15.0 h1:urgKGqt2JAc9NFJcgncQcohHdiYb803YTH9OQwHBHIY=
@ -16,201 +19,185 @@ 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/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/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo=
github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k=
github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=
github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/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/go-sql-driver/mysql v1.9.0 h1:Y0zIbQXhQKmQgTp44Y1dp3wTXcn804QoTptLZT1vtvo=
github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/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/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/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/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/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/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/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.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/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/wechatpay-apiv3/wechatpay-go v0.2.20 h1:gS8oFn1bHGnyapR2Zb4aqTV6l4kJWgbtqjCq6k1L9DQ=
github.com/wechatpay-apiv3/wechatpay-go v0.2.20/go.mod h1:A254AUBVB6R+EqQFo3yTgeh7HtyqRRtN2w9hQSOrd4Q=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
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/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.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.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-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-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-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.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.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.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.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=
gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
modernc.org/cc/v3 v3.37.0/go.mod h1:vtL+3mdHx/wcj3iEGz84rQa8vEqR6XM84v5Lcvfph20=
modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0=
modernc.org/ccgo/v3 v3.0.0-20220904174949-82d86e1b6d56/go.mod h1:YSXjPL62P2AMSxBphRHPn7IkzhVHqkvOnRKAKh+W6ZI=
modernc.org/ccgo/v3 v3.16.13-0.20221017192402-261537637ce8/go.mod h1:fUB3Vn0nVPReA+7IG7yZDfjv1TMWjhQP8gCxrFAtL5g=
modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY=
modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
modernc.org/libc v1.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA=
modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0=
modernc.org/libc v1.21.4/go.mod h1:przBsL5RDOZajTVslkugzLBj1evTue36jEomFQOoYuI=
modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE=
modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY=
modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/memory v1.4.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM=
modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk=
modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c=
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=
shylinux.com/x/community v0.0.28 h1:/h7gthD8X6lVh1dDg3W3sBX4dpotbddfdGdR/BqBV4c=
shylinux.com/x/community v0.0.28/go.mod h1:MamBZhpO3+c5YISRJt4xnxa5VDBBstUR+9FnPQrhZMU=
shylinux.com/x/enterprise v0.0.17 h1:29VjNHt4YiPryQGNtVTnYqiXNHxau4EnkoUDzlxgB6Y=
shylinux.com/x/enterprise v0.0.17/go.mod h1:+DmZbYMykX5U65BJ7DYOcwFubslKa2b78DyRaqUYuH4=
shylinux.com/x/go-git/v5 v5.6.7 h1:WD5QSco7m3QooPCgdvQ6/GyGIFPun8C+hex5N41LYlk=
shylinux.com/x/go-git/v5 v5.6.7/go.mod h1:Qb0lA+uIrofZg8NQerhYcJHgGWixFqvS6p3aJ/L5Nlk=
shylinux.com/x/go-qrcode v0.0.3 h1:RMo+Vidbgq3HatLBj7DDXcTbTLFUwzis5K7TqBkD38U=
shylinux.com/x/go-qrcode v0.0.3/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po=
shylinux.com/x/go-sql-mysql v0.0.2/go.mod h1:lHjRMZz5Lii6U+49fhkbCWgsnL+yux54SYJYWqASN8Y=
shylinux.com/x/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/golang-story v0.0.32 h1:7xu28iREL2cuZzf80luJwI9BWptow+ME00L1lgyjmDI=
shylinux.com/x/golang-story v0.0.32/go.mod h1:NsI5fULu3q7o2b+VzZ5tiJ3+0pUTjE9DdQxa870htmw=
shylinux.com/x/ice v1.5.73/go.mod h1:uGI73gYkk+FiJt5qmy/aYhoKRJ4wobcJk3WrPGh8Waw=
shylinux.com/x/ice v1.5.74 h1:5hTPmchO79b1d2+/DwBDLiG2WkTL65G/hOEAcGJVeB8=
shylinux.com/x/ice v1.5.74/go.mod h1:/XAib8Ha+z6jzLRs2Pig+qxDx4C8dT8Vfaq2InJ/lkU=
shylinux.com/x/icebergs v1.9.75/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk=
shylinux.com/x/icebergs v1.9.76 h1:SHOTbiO+jh09GEFzoo8t8kmR1BCu+zkNCpdfxPCLeu0=
shylinux.com/x/icebergs v1.9.76/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk=
shylinux.com/x/mysql-story v0.6.32 h1:Q274WFJ09ocnf8nhlQnKr02FMMdPYBLWqu2IjTVqGiM=
shylinux.com/x/mysql-story v0.6.32/go.mod h1:8HCeDUV6ghaIeJD1IEhSeSOfVC9wEI93y2G9QBLtJJY=
shylinux.com/x/toolkits v0.7.10/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.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/toolkits v1.0.19 h1:Nrx0xYRc5ph1WS66EZ1hJUCe+2FdSWQ4QP6tBlguikQ=
shylinux.com/x/toolkits v1.0.19/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/websocket v0.0.4 h1:AJpwblePoOpiE6C8NrvgNYpKTotXMLrDDX2chTvx44Q=
shylinux.com/x/websocket v0.0.4/go.mod h1:3UGWkjTu3ie5NAZen7J+uLPBrO7DFeKloj6Jxo13Oiw=
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=

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

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,8 @@
package jiaowuxitong
import (
"strconv"
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
@ -15,48 +17,47 @@ type Table struct {
func (s Table) Inputs(m *ice.Message, arg ...string) {
switch arg[0] {
case model.CLASS_TYPE:
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()
s.InputsListRole(m, UserClassRoleList, arg...)
case model.CLASS_TYPE:
s.InputsList(m, ClassTypeList, arg...)
case model.SCHOOL_UID:
m.Cmdy(school{}, s.Select).Cut(model.UID, model.NAME).RenameAppend(model.UID, arg[0])
m.DisplayInputKeyNameIconTitle()
case model.SCHOOL_NAME, model.CITY_NAME:
m.Cmdy(Portal{}, Portal{}.PlaceList, m.Option(model.USER_UID)).Cut(arg[0])
default:
s.Table.Inputs(m, arg...)
}
}
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
m.RewriteAppend(func(value, key string, index int) 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() })
if _, e := strconv.ParseInt(value, 10, 64); e != nil {
return value
}
switch key {
case model.USER_CLASS_ROLE:
value = UserClassRole(kit.Int(value)).String()
case model.CLASS_TYPE:
value = ClassType(kit.Int(value)).String()
}
return value
})
return s.Table.RewriteAppend(m)
}
func (s Table) 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) SelectJoinSchool(m *ice.Message) {
s.SelectJoin(m, school{}, model.NAME, model.CITY_UID)
s.SelectJoinCity(m)
}
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
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())
}
type Tables struct {
Table
portal string `data:"true"`
}
type Tables struct{ Table }
func (s Tables) BeforeMigrate(m *ice.Message, arg ...string) {}
func NewPortal(userPlace gonganxitong.UserPlacer, place gonganxitong.Placer) Portal {
return Portal{Portal: gonganxitong.NewPortal(userPlace, place, school{})}
}

View File

@ -1,28 +1,14 @@
package jiaowuxitong
import (
"shylinux.com/x/ice"
kit "shylinux.com/x/toolkits"
"shylinux.com/x/education/src/jiaowuxitong/model"
)
import "shylinux.com/x/ice"
type homework struct {
Table
class class
userClass userClass
portal string `data:"true"`
create string `name:"create title* content*" role:"void"`
fields string `data:"title,content,user_uid"`
create string `name:"create title* content*" role:"teacher"`
remove string `name:"remove" role:"teacher"`
}
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 (s homework) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
func init() { ice.TeamCtxCmd(homework{}) }

View File

@ -1,13 +1,9 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
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}]},
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

@ -5,46 +5,37 @@ 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.ModelWithUID
UserUID string `gorm:"type:char(32);index"`
db.ModelUserPlace
ClassUID string `gorm:"type:char(32);index"`
Role uint8
}
type Class struct {
db.ModelWithUID
db.ModelPlace
SchoolUID string `gorm:"type:char(32);index"`
Grade string `gorm:"type:char(32)"`
Name string `gorm:"type:char(64)"`
Type uint8
Grade string `gorm:"type:varchar(32)"`
}
type School struct {
db.ModelWithUID
CityUID string `gorm:"type:char(32);index:idx_city"`
Name string `gorm:"type:char(64);index:idx_city"`
Info string
db.ModelStreet
}
type Homework struct {
db.ModelWithUID
db.ModelContent
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,11 +4,7 @@ import "shylinux.com/x/community/src/gonganxitong"
type Portal struct {
gonganxitong.Portal
name string `data:"教务系统"`
list string `name:"list class_uid index uid auto" role:"void"`
placeCreate string `name:"placeCreate city_name* school_name* grade*:select class_name*" role:"void"`
placeCreate string `name:"placeCreate city_name* school_name* class_name* class_type:select grade*:select" role:"void"`
}
func init() {
gonganxitong.PortalCmd(Portal{Portal: gonganxitong.NewPortal(userClass{}, class{}, school{})})
}
func init() { gonganxitong.PortalCmd(NewPortal(userClass{}, class{})) }

View File

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

View File

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

View File

@ -6,15 +6,39 @@ import (
"shylinux.com/x/education/src/jiaowuxitong/model"
)
type school struct{ Table }
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"`
}
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.Create, model.NAME, arg[3], arg[0], arg[1])
msg := m.Cmd(s, s.Insert, model.NAME, arg[3], arg[0], arg[1])
arg[2], arg[3] = model.SCHOOL_UID, msg.Result()
} else {
arg[2], arg[3] = model.SCHOOL_UID, msg.Append(model.UID)
}
}
func (s school) Modify(m *ice.Message, arg ...string) {
s.Update(m, m.OptionSimple(model.INFO), m.OptionSimple(model.UID)...)
}
func (s school) List(m *ice.Message, arg ...string) {
if len(arg) == 0 {
s.CityList(m)
} else if msg := s.CityList(m.Spawn(), arg[0]); len(arg) == 1 {
s.Select(m, model.CITY_UID, msg.Append(model.UID))
} else if len(arg) == 2 {
s.Select(m, model.CITY_UID, msg.Append(model.UID), model.NAME, arg[1])
if m.Append(model.AUTH_UID) == "" {
m.EchoInfoButton("请申请学校认证", s.AuthCreate)
}
}
}
func (s school) AuthCreate(m *ice.Message, arg ...string) {
msg := s.CityCmd(m, s.Select, model.UID, m.Option(model.CITY_UID))
s.Table.AuthCreate(m, 5, msg.Append(model.AUTH_UID), m.OptionSimple(model.UID)...)
}
func init() { ice.TeamCtxCmd(school{}) }

View File

@ -1,61 +1,24 @@
package jiaowuxitong
import (
"shylinux.com/x/ice"
import "shylinux.com/x/ice"
"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)
}
type userClass struct{ Table }
func init() { ice.TeamCtxCmd(userClass{}) }
type UserClassRole int
const (
UserClassCreator UserClassRole = iota
UserClassVisitor
UserClassVisitor UserClassRole = iota
UserClassCreator
UserClassTeacher
UserClassStudent
UserClassParent
)
var UserClassRoleList = map[UserClassRole]string{
UserClassCreator: "creator",
UserClassVisitor: "visitor",
UserClassCreator: "creator",
UserClassTeacher: "teacher",
UserClassStudent: "student",
UserClassParent: "parent",

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,83 +1,252 @@
{
"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",
"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",
"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": {
"index": "web.team.gonganxitong.placeUser",
"order": "5",
"role": "creator,landlord",
"time": "2024-08-03 15:09:01.516"
}
},
"882a999b4a72a9866d9e4eef110d335a": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.gonganxitong.photo",
"name": "在线相册",
"order": "95",
"role": "leader,worker",
"time": "2024-11-26 12:33:10.147"
}
},
"8ce4dfb877e04e3be5144253fdd5d8ff": {
"meta": {
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.gonganxitong.allow",
"name": "权限审批",
"order": "4",
"role": "creator",
"time": "2024-08-16 13:04:16.257"
}
},
"91dd0e9590d3021944f14f3ec8653beb": {
"meta": {
"index": "web.team.gonganxitong.order",
"order": "4",
"role": "creator",
"time": "2024-08-03 14:36:39.469"
}
},
"a53e36dcca735ef90b649fec546f520e": {
"meta": {
"icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.gonganxitong.credit",
"name": "用户名片",
"order": "102",
"time": "2024-09-30 09:55:22.712"
}
},
"a89a7c09e326295aaa7e7ea3d66fb28a": {
"meta": {
"icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.gonganxitong.support",
"name": "客服支持",
"order": "103",
"time": "2024-08-20 17:15:51.782"
}
},
"bdec92d5849b2a60a8811cff494f2391": {
"meta": {
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.gonganxitong.event",
"name": "事件流",
"order": "2",
"role": "creator",
"time": "2024-08-03 14:36:39.469"
}
},
"be08ca65be90feca325df128a06e440f": {
"meta": {
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.gonganxitong.recent",
"name": "最近访问",
"order": "101",
"time": "2024-08-20 21:47:27.340"
}
},
"c1526ecd405021d6d47798c066bf70c0": {
"meta": {
"icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.gonganxitong.notice",
"name": "通知公告",
"order": "94",
"role": "leader",
"time": "2024-09-10 13:43:43.725"
}
},
"c73251765fb5286cea9c8ceefb74530c": {
"meta": {
"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",
"index": "web.team.gonganxitong.qrcode",
"name": "场景码",
"order": "1",
"role": "creator",
"time": "2024-08-03 14:32:27.153"
}
},
"f24b53f61852f58734f9ef8488705026": {
"meta": {
"auth": "issued",
"icons": "https://img.icons8.com/officel/80/video-conference.png",
"index": "web.team.gonganxitong.meeting",
"name": "在线会议",
"order": "91",
"role": "leader,worker",
"time": "2024-11-22 14:32:17.504"
}
},
"f28c03b5bdbbe92ebc89dabca5e7d4de": {
"meta": {
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.gonganxitong.member",
"name": "组织成员",
"order": "80",
"role": "leader,worker,server",
"time": "2024-09-03 01:31:39.817"
}
},
"fd1884bbeb1f1a83f4e12f857bfe5b15": {
"meta": {
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.gonganxitong.message",
"name": "消息待办",
"order": "100",
"time": "2024-08-20 21:47:27.312"
}
},
"fd86aad80a667152781bb188fb1249a2": {
"meta": {
"icons": "https://img.icons8.com/officel/80/reading-confirmation.png",
"index": "web.team.gonganxitong.email",
"name": "邮箱配置",
"time": "2024-08-03 15:09:01.515"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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