Compare commits

..

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

63 changed files with 496 additions and 753 deletions

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2017-2025 shylinux Copyright (c) 2020 shylinux
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

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

View File

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

46
go.mod
View File

@ -2,16 +2,18 @@ module shylinux.com/x/community
go 1.21 go 1.21
toolchain go1.23.4
require ( require (
shylinux.com/x/enterprise v0.0.14 shylinux.com/x/enterprise v0.0.10
shylinux.com/x/golang-story v0.0.32 shylinux.com/x/golang-story v0.0.26
shylinux.com/x/mysql-story v0.6.32 shylinux.com/x/mysql-story v0.6.27
) )
require ( require (
shylinux.com/x/ice v1.5.74 shylinux.com/x/ice v1.5.65
shylinux.com/x/icebergs v1.9.76 shylinux.com/x/icebergs v1.9.67
shylinux.com/x/toolkits v1.0.19 shylinux.com/x/toolkits v1.0.18
) )
require ( require (
@ -21,35 +23,23 @@ require (
) )
require ( require (
filippo.io/edwards25519 v1.1.0 // 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/go-sql-driver/mysql v1.9.0 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/mattn/go-sqlite3 v1.14.22 // indirect
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1095 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1095
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.1046 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.1046
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/smh v1.0.1051 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/smh v1.0.1051
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1047 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1047
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1095 github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1095
github.com/wechatpay-apiv3/wechatpay-go v0.2.20 github.com/wechatpay-apiv3/wechatpay-go v0.2.20
)
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
golang.org/x/sys v0.21.0 // indirect
golang.org/x/text v0.22.0 // indirect golang.org/x/text v0.22.0 // indirect
gorm.io/driver/mysql v1.5.7 // indirect gorm.io/driver/mysql v1.5.7 // indirect
gorm.io/driver/sqlite v1.5.6 // indirect
gorm.io/gorm v1.25.12 // 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
) )

146
go.sum
View File

@ -1,16 +1,23 @@
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
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/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw= 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/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw=
github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
github.com/bgould/http v0.0.0-20190627042742-d268792bdee7/go.mod h1:BTqvVegvwifopl4KTEDth6Zezs9eR+lCWhvGKvkxJHE=
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= 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/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= 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.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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= 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/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts=
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA= github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY= github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
github.com/emersion/go-message v0.15.0 h1:urgKGqt2JAc9NFJcgncQcohHdiYb803YTH9OQwHBHIY= github.com/emersion/go-message v0.15.0 h1:urgKGqt2JAc9NFJcgncQcohHdiYb803YTH9OQwHBHIY=
@ -19,20 +26,26 @@ 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-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 h1:IbFBtwoTQyw0fIM5xv1HF+Y+3ZijDR839WMulgxCcUY=
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U= github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U=
github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s=
github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= 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/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
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/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
github.com/go-sql-driver/mysql v1.9.0 h1:Y0zIbQXhQKmQgTp44Y1dp3wTXcn804QoTptLZT1vtvo= github.com/go-sql-driver/mysql v1.9.0 h1:Y0zIbQXhQKmQgTp44Y1dp3wTXcn804QoTptLZT1vtvo=
github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw= github.com/go-sql-driver/mysql v1.9.0/go.mod h1:pDetrLJeA3oMujJuvXc8RJoasr589B6A9fwzD3QMrqw=
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.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ=
github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/hajimehoshi/go-jisx0208 v1.0.0/go.mod h1:yYxEStHL7lt9uL+AbdWgW9gBumwieDoZCiB1f/0X0as=
github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= 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 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
@ -40,23 +53,45 @@ github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/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/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
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-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= 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-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/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys=
github.com/peterbourgon/ff/v3 v3.1.2/go.mod h1:XNJLY8EIl6MjMVjBS4F0+G0LYoAqs0DTa4rmHHukKDE=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-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/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/sago35/go-bdf v0.0.0-20200313142241-6c17821c91c4/go.mod h1:rOebXGuMLsXhZAC6mF/TjxONsm45498ZyzVhel++6KM=
github.com/saltosystems/winrt-go v0.0.0-20240509164145-4f7860a3bd2b/go.mod h1:CIltaIm7qaANUIvzr0Vmz71lmQMAIbGJ7cvgzX7FMfA=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/soypat/cyw43439 v0.0.0-20240609122733-da9153086796/go.mod h1:1Otjk6PRhfzfcVHeWMEeku/VntFqWghUwuSQyivb2vE=
github.com/soypat/natiu-mqtt v0.5.1/go.mod h1:xEta+cwop9izVCW7xOx2W+ct9PRMqr0gNVkvBPnQTc4=
github.com/soypat/saleae v0.0.0-20230402180913-3584b7515dae/go.mod h1:9SV+w6E9YK/BePxdxYGXthkrRztHJCQlojWOjAxW3M4=
github.com/soypat/seqs v0.0.0-20240527012110-1201bab640ef/go.mod h1:oCVCNGCHMKoBj97Zp9znLbQ1nHxpkmOY9X+UAGzOxc8=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.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.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.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.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.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 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/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/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1046/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1046/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1047/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1047/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1051/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1051/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
@ -70,20 +105,36 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1047 h1:FF8uER
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1047/go.mod h1:3tgFFSlybx6XyhvLWpnSjWYFMedTyQC9oyh8CH1Ak28= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.1047/go.mod h1:3tgFFSlybx6XyhvLWpnSjWYFMedTyQC9oyh8CH1Ak28=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1095 h1:l7SQnVkft1vPdfE/gv/ee2wBj54+hacPzchjs4gnGgw= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1095 h1:l7SQnVkft1vPdfE/gv/ee2wBj54+hacPzchjs4gnGgw=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1095/go.mod h1:7V6/Y6tPk0jL21YAevsuDSBSN3nU5XFRBR6CFsTLhJE= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.1095/go.mod h1:7V6/Y6tPk0jL21YAevsuDSBSN3nU5XFRBR6CFsTLhJE=
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/wechatpay-apiv3/wechatpay-go v0.2.20 h1:gS8oFn1bHGnyapR2Zb4aqTV6l4kJWgbtqjCq6k1L9DQ= 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/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.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.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-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-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-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.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.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.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.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.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-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.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.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.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
@ -91,14 +142,21 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 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-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-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.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.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.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= 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.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.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.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.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
@ -106,36 +164,50 @@ 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/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/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-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-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-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-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-20220704084225-05e143d24a9e/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.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.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.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.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.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/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/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-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.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.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.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.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= 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.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.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.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/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.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.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.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.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.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
@ -145,7 +217,9 @@ 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-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= 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/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
@ -154,12 +228,17 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/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= 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/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.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 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 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 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo=
gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM=
gorm.io/driver/sqlite v1.5.6 h1:fO/X46qn5NUEEOZtnjJRWRzZMe8nqJiQ9E+0hi+hKQE=
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.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
gorm.io/gorm v1.25.11/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= 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.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
@ -174,41 +253,56 @@ 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.17.4/go.mod h1:WNg2ZH56rDEwdropAJeZPQkXmDwh+JCA1s/htl6r2fA=
modernc.org/libc v1.20.3/go.mod h1:ZRfIaEkgrYgZDl6pa4W39HgN5G/yDW+NRmNKZBDFrk0= 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.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/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/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/memory v1.3.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= 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.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/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/opt v0.1.3/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/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk=
modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= 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/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=
shylinux.com/x/enterprise v0.0.14 h1:gxxAtMt4sLy8+HN10jJipZ6xa0it/rllZZGKwWILJ2Q= shylinux.com/x/enterprise v0.0.10 h1:Pl0bhydypEuCCVwa/PGfHOkDs8LHGG1qMik8I8CCtus=
shylinux.com/x/enterprise v0.0.14/go.mod h1:RR4LfgQMgy8ckZuga6pEvEl9TxF3gbfHN+Mh3Jhk1GI= shylinux.com/x/enterprise v0.0.10/go.mod h1:mgh/zLFxQGQ755yGgwy1gqalsfOvkEd1XdnbKp/5VpM=
shylinux.com/x/go-git/v5 v5.6.7 h1:WD5QSco7m3QooPCgdvQ6/GyGIFPun8C+hex5N41LYlk= 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-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 h1:RMo+Vidbgq3HatLBj7DDXcTbTLFUwzis5K7TqBkD38U=
shylinux.com/x/go-qrcode v0.0.3/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po= 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/go-sql-mysql v0.0.2/go.mod h1:lHjRMZz5Lii6U+49fhkbCWgsnL+yux54SYJYWqASN8Y=
shylinux.com/x/golang-story v0.0.32 h1:7xu28iREL2cuZzf80luJwI9BWptow+ME00L1lgyjmDI= shylinux.com/x/golang-story v0.0.26 h1:CBP34sygh6Pc4nDZnM27RCJ2eTxENBS0qMRaamXMQeY=
shylinux.com/x/golang-story v0.0.32/go.mod h1:NsI5fULu3q7o2b+VzZ5tiJ3+0pUTjE9DdQxa870htmw= shylinux.com/x/golang-story v0.0.26/go.mod h1:elamEBuhuzD1XFHpncYA3nAiuUlIKFBX+Y33Na5A+1c=
shylinux.com/x/ice v1.5.73/go.mod h1:uGI73gYkk+FiJt5qmy/aYhoKRJ4wobcJk3WrPGh8Waw= shylinux.com/x/ice v1.5.48/go.mod h1:aDG7yzDlX3NsWEoIjIoiV3sQPec4APZGbYsSJFtcI4I=
shylinux.com/x/ice v1.5.74 h1:5hTPmchO79b1d2+/DwBDLiG2WkTL65G/hOEAcGJVeB8= shylinux.com/x/ice v1.5.52/go.mod h1:/JB9G+x9aDy5fX+gbXImnfumPzy+g1gNV9TIf0nRJ30=
shylinux.com/x/ice v1.5.74/go.mod h1:/XAib8Ha+z6jzLRs2Pig+qxDx4C8dT8Vfaq2InJ/lkU= shylinux.com/x/ice v1.5.65 h1:LALedqPzN4rxmzYWsDkrzO/uElahwmUsFoGT5WnOzLo=
shylinux.com/x/icebergs v1.9.75/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk= shylinux.com/x/ice v1.5.65/go.mod h1:iMhKyRiIlBOKwl/oP817mpZf3vB9frMl2CBDyy4Z09s=
shylinux.com/x/icebergs v1.9.76 h1:SHOTbiO+jh09GEFzoo8t8kmR1BCu+zkNCpdfxPCLeu0= shylinux.com/x/icebergs v1.9.48/go.mod h1:wM3PkomBSeASTekVjxuOP8Y28HYq84MxUZ3d5BZEN74=
shylinux.com/x/icebergs v1.9.76/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk= shylinux.com/x/icebergs v1.9.52/go.mod h1:d8sN77l5UZA+h8/swZ9OzqRCruoSYHWYjg5qKWnQI2s=
shylinux.com/x/mysql-story v0.6.32 h1:Q274WFJ09ocnf8nhlQnKr02FMMdPYBLWqu2IjTVqGiM= shylinux.com/x/icebergs v1.9.67 h1:GYC2BcWLDGW/uTm7gqsvJm5xl138QchWfM9SHjQ/qBo=
shylinux.com/x/mysql-story v0.6.32/go.mod h1:8HCeDUV6ghaIeJD1IEhSeSOfVC9wEI93y2G9QBLtJJY= shylinux.com/x/icebergs v1.9.67/go.mod h1:+4bl7yJRMFtlTQRDLd+xh6b0hwXkqWaHLmx63Jeewwk=
shylinux.com/x/mysql-story v0.6.26 h1:F7W/u8FL3gHZUoqf10WTPdKTQdIQvT9JydePTn9ZV/4=
shylinux.com/x/mysql-story v0.6.26/go.mod h1:gB1XbC94jPjS8szv60V3b3/NWzro1ndFwVzZBalDN+4=
shylinux.com/x/mysql-story v0.6.27 h1:ePHSrAUc2WdUyfW/SIdA82lLv2WcqDiLfGFriwzRUqQ=
shylinux.com/x/mysql-story v0.6.27/go.mod h1:PO3VT3oejD9+U1wGD7KIZ7itw+AZV+ysuecGMpbJiGw=
shylinux.com/x/toolkits v0.7.10/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q= shylinux.com/x/toolkits v0.7.10/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.19 h1:Nrx0xYRc5ph1WS66EZ1hJUCe+2FdSWQ4QP6tBlguikQ= shylinux.com/x/toolkits v1.0.15/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.19/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q= shylinux.com/x/toolkits v1.0.16/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/toolkits v1.0.18 h1:jtQZhmvU10Ajegc87tU0cYFUBSviaODo5TsCXpYb2O4=
shylinux.com/x/toolkits v1.0.18/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
shylinux.com/x/websocket v0.0.4 h1:AJpwblePoOpiE6C8NrvgNYpKTotXMLrDDX2chTvx44Q= shylinux.com/x/websocket v0.0.4 h1:AJpwblePoOpiE6C8NrvgNYpKTotXMLrDDX2chTvx44Q=
shylinux.com/x/websocket v0.0.4/go.mod h1:3UGWkjTu3ie5NAZen7J+uLPBrO7DFeKloj6Jxo13Oiw= shylinux.com/x/websocket v0.0.4/go.mod h1:3UGWkjTu3ie5NAZen7J+uLPBrO7DFeKloj6Jxo13Oiw=
tinygo.org/x/bluetooth v0.10.0/go.mod h1:t/Vm2a/rslsBoqFQKCBsWQw/cmRicQq+8Tl3tj5RCRI=
tinygo.org/x/drivers v0.14.0/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
tinygo.org/x/drivers v0.15.1/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
tinygo.org/x/drivers v0.16.0/go.mod h1:uT2svMq3EpBZpKkGO+NQHjxjGf1f42ra4OnMMwQL2aI=
tinygo.org/x/drivers v0.19.0/go.mod h1:uJD/l1qWzxzLx+vcxaW0eY464N5RAgFi1zTVzASFdqI=
tinygo.org/x/drivers v0.25.0/go.mod h1:v+mXaA4cgpz/YZJ3ZPm/86bYQJAXTaYtMkHlVwbodbw=
tinygo.org/x/drivers v0.26.1-0.20230922160320-ed51435c2ef6/go.mod h1:X7utcg3yfFUFuKLOMTZD56eztXMjpkcf8OHldfTBsjw=
tinygo.org/x/tinyfont v0.2.1/go.mod h1:eLqnYSrFRjt5STxWaMeOWJTzrKhXqpWw7nU3bPfKOAM=
tinygo.org/x/tinyfont v0.3.0/go.mod h1:+TV5q0KpwSGRWnN+ITijsIhrWYJkoUCp9MYELjKpAXk=
tinygo.org/x/tinyfont v0.4.0/go.mod h1:7nVj3j3geqBoPDzpFukAhF1C8AP9YocMsZy0HSAcGCA=
tinygo.org/x/tinyfs v0.1.0/go.mod h1:ysc8Y92iHfhTXeyEM9+c7zviUQ4fN9UCFgSOFfMWv20=
tinygo.org/x/tinyterm v0.1.0/go.mod h1:/DDhNnGwNF2/tNgHywvyZuCGnbH3ov49Z/6e8LPLRR4=
tinygo.org/x/tinyterm v0.3.0/go.mod h1:F1pQjxEwNZQIc5czeJSBtk57ucEvbR4u7vHaLhWhHtg=

View File

@ -1,7 +1,7 @@
spark project "云时代的新型操作系统,既要完全自给自足,又要任意互联互通" ` spark project "云时代的新型操作系统,既要完全自给自足,又要任意互联互通" `
<b>用户场景:</b> <b>用户场景:</b>管理用户场景,如居住场所、办公场所。
<b>认证授权:</b> <b>认证授权:</b>认证与授权,平台、城市、公司、服务、个人。
<b>约号系统:</b> <b>约号系统:</b>约号系统。
<b>活动组织:</b> <b>活动组织:</b>活动组织。
` `
spark product spark product

View File

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

View File

@ -1,2 +0,0 @@
$output div.item.card div.title span.role { margin-left:auto; }
$output div.item.card div.title div.action { top:24px; }

View File

@ -19,7 +19,8 @@ type allow struct {
func (s allow) Create(m *ice.Message, arg ...string) { func (s allow) Create(m *ice.Message, arg ...string) {
s.Insert(m.Spawn(), arg...) s.Insert(m.Spawn(), arg...)
s.SendMessage(s.GetCommandUID(m), m.Option(model.FROM_USER_UID), "") s.GetCommandUID(m)
s.SendMessage(m, m.Option(model.FROM_USER_UID), "")
s.SendTemplate(m, "", "", m.Trans("please allow", "权限审批 请处理")) s.SendTemplate(m, "", "", m.Trans("please allow", "权限审批 请处理"))
} }
func (s allow) List(m *ice.Message, arg ...string) { func (s allow) List(m *ice.Message, arg ...string) {
@ -29,15 +30,13 @@ func (s allow) List(m *ice.Message, arg ...string) {
s.AS(s.Key(s, model.UID), model.ALLOW_UID), model.ALLOW_STATUS, s.AS(s.Key(s, model.UID), model.ALLOW_UID), model.ALLOW_STATUS,
) )
if len(arg) == 1 { if len(arg) == 1 {
// s.Select(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID)).Action() s.Select(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID)).Action()
s.Select(m, s.Key(s, model.PLACE_UID), arg[0]).Action()
if m.Length() == 0 { if m.Length() == 0 {
m.Cmdy(s.Prefix(m, qrcode{}), qrcode{}.ApplyQRCode, arg[0]).SetAppend().Action() m.Cmdy(s.Prefix(m, qrcode{}), qrcode{}.ApplyQRCode, arg[0]).SetAppend().Action()
return return
} }
} else if len(arg) == 2 { } else if len(arg) == 2 {
// s.SelectDetail(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID), s.Key(s.apply, model.UID), arg[1]) s.SelectDetail(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID), s.Key(s.apply, model.UID), arg[1])
s.SelectDetail(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s.apply, model.UID), arg[1])
m.Table(func(value ice.Maps) { m.Table(func(value ice.Maps) {
if AllowStatus(kit.Int(value[model.ALLOW_STATUS])) != AllowCreate { if AllowStatus(kit.Int(value[model.ALLOW_STATUS])) != AllowCreate {
s.DoneMessage(m) s.DoneMessage(m)
@ -54,7 +53,7 @@ func (s allow) List(m *ice.Message, arg ...string) {
} }
}) })
s.SelectJoinUser(m) s.SelectJoinUser(m)
s.DisplayBase(m, "").DisplayCSS("") s.DisplayBase(m, "")
} }
func (s allow) Reject(m *ice.Message, arg ...string) { func (s allow) Reject(m *ice.Message, arg ...string) {
s.process(m, AllowCreate, AllowRejected, "❌", m.Trans("allow rejected", "权限审批 已驳回")) s.process(m, AllowCreate, AllowRejected, "❌", m.Trans("allow rejected", "权限审批 已驳回"))
@ -74,15 +73,10 @@ func (s allow) process(m *ice.Message, from, to AllowStatus, icon string, title
s.DoneMessage(m) s.DoneMessage(m)
} }
func (s allow) changeStatus(m *ice.Message, from, to AllowStatus, arg ...string) *ice.Message { func (s allow) changeStatus(m *ice.Message, from, to AllowStatus, arg ...string) *ice.Message {
// msg := s.Select(m.Spawn(), model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID)) msg := s.Select(m.Spawn(), model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID))
args := []string{model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID)}
if s.IsLeader(m) {
args = []string{model.UID, m.Option(model.ALLOW_UID)}
}
msg := s.Select(m.Spawn(), args...)
if !m.WarnNotFound(msg.Length() == 0, m.Option(model.ALLOW_UID)) { if !m.WarnNotFound(msg.Length() == 0, m.Option(model.ALLOW_UID)) {
if status := AllowStatus(kit.Int(msg.Append(model.STATUS))); !m.WarnNotValid(status != from, status.String()) { if status := AllowStatus(kit.Int(msg.Append(model.STATUS))); !m.WarnNotValid(status != from, status.String()) {
s.Update(m.Spawn(), kit.Dict(model.STATUS, to), args...) s.Update(m, kit.Dict(model.STATUS, to), model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID))
} }
} }
return msg return msg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -32,7 +32,8 @@ func (s apply) Create(m *ice.Message, arg ...string) {
} }
func (s apply) List(m *ice.Message, arg ...string) { func (s apply) List(m *ice.Message, arg ...string) {
s.FieldsWithCreatedAT(m, s, model.USER_UID, model.APPLY_STATUS, s.FieldsWithCreatedAT(m, s, model.USER_UID, model.APPLY_STATUS,
s.AS(s.Key(s, model.ROLE), s.Keys(s.UserPlace, model.ROLE)), model.BEGIN_TIME, model.END_TIME) s.AS(s.Key(s, model.ROLE), s.Keys(s.UserPlace, model.ROLE)), model.BEGIN_TIME, model.END_TIME,
)
if len(arg) == 1 { if len(arg) == 1 {
s.Select(m, model.PLACE_UID, arg[0], model.USER_UID, m.Option(model.USER_UID)) s.Select(m, model.PLACE_UID, arg[0], model.USER_UID, m.Option(model.USER_UID))
if m.Length() == 0 { if m.Length() == 0 {
@ -58,20 +59,6 @@ func (s apply) List(m *ice.Message, arg ...string) {
func (s apply) Cancel(m *ice.Message, arg ...string) { func (s apply) Cancel(m *ice.Message, arg ...string) {
s.changeStatus(m, ApplyCreate, ApplyCancel) s.changeStatus(m, ApplyCreate, ApplyCancel)
} }
func (s apply) ApplyCreate(m *ice.Message, arg ...string) {
m.Option(model.UID, m.Cmdy("", s.Create, s.Keys(s.UserPlace, model.ROLE), "3").Result())
m.Cmdy("", s.Submit)
}
func (s Table) ApplyCreate(m *ice.Message, arg ...string) {
m.Cmdy(s.Prefix(m, apply{}), s.ApplyCreate)
}
func (s Table) ApplyCheck(m *ice.Message, arg ...string) {
if m.Cmd(s.Prefix(m, apply{}), arg[0]).Length() == 0 {
m.EchoInfoButton("请申请加入团队", s.ApplyCreate)
} else {
m.Echo("\n「权限申请」已提交\n请等待「管理员」审批\n然后刷新界面查看最新状态")
}
}
func (s apply) Submit(m *ice.Message, arg ...string) { func (s apply) Submit(m *ice.Message, arg ...string) {
msg := s.changeStatus(m, ApplyCreate, ApplySubmit) msg := s.changeStatus(m, ApplyCreate, ApplySubmit)
if m.WarnNotValid(msg.IsErr()) { if m.WarnNotValid(msg.IsErr()) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -71,7 +71,7 @@ func (s command) Cache(m *ice.Message, arg ...string) {
func (s command) List(m *ice.Message, arg ...string) *ice.Message { func (s command) List(m *ice.Message, arg ...string) *ice.Message {
s.Tables(m, s.service).Fields(m, s.Key(s, model.UPDATED_AT), s.Tables(m, s.service).Fields(m, s.Key(s, model.UPDATED_AT),
s.Key(s, model.INDEX), s.AS(s.Key(s.service, "`"+model.INDEX+"`"), model.PORTAL), s.AS(model.NODENAME, model.SPACE), s.Key(s, model.INDEX), s.AS(s.Key(s.service, "`"+model.INDEX+"`"), model.PORTAL), s.AS(model.NODENAME, model.SPACE),
).Orders(m, "`space`,`commands`.`index`").Limit(m, 3000).Select(m).Action(s.Cache, s.Autogen) ).Orders(m, "`space`,`commands`.`index`").Limit(m, 300).Select(m).Action(s.Cache, s.Autogen)
return m return m
} }

View File

@ -37,35 +37,26 @@ type Container interface {
type Table struct { type Table struct {
db.Table db.Table
UserPlace UserPlacer UserPlace UserPlacer
Place Placer Place Placer
Street Container Street Container
STREET_UID string STREET_UID string
PLACE_UID string PLACE_UID string
checkRole string `name:"checkRole role"` checkRole string `name:"checkRole role"`
inputs string `name:"inputs" role:"void"` inputs string `name:"inputs" role:"void"`
list string `name:"list place_uid uid auto" role:"void"` list string `name:"list place_uid uid auto" role:"void"`
marketInsert string `name:"marketInsert domain_uid* title* content" style:"notice" role:"leader"` marketInsert string `name:"marketInsert domain_uid* title* content" role:"leader"`
pushPublic string `name:"pushPublic domain_uid* title* content" role:"leader"` memberList string `name:"memberList" role:"void"`
memberList string `name:"memberList" role:"void"` noticeList string `name:"noticeList" role:"void"`
noticeList string `name:"noticeList" role:"void"`
marketPlaceInfo string `name:"marketPlaceInfo" role:"void"`
messagePlaceInfo string `name:"messagePlaceInfo" role:"void"`
// applyCreate string `name:"applyCreate" role:"void"`
} }
func (s Table) LoadTrans(m *ice.Message, arg ...string) { func (s Table) LoadTrans(m *ice.Message, arg ...string) {
// m.Option("_iconslib", "https://img.icons8.com/officel/80/")
p := kit.FileLine(1, 100) p := kit.FileLine(1, 100)
if m.PrefixKey() != api.GONGANXITONG_PORTAL { if m.PrefixKey() != api.GONGANXITONG_PORTAL {
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(p), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command) ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(p), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
} }
h := ctx.GetCmdFile(m.Message, m.PrefixKey()) h := ctx.GetCmdFile(m.Message, m.PrefixKey())
kit.If(strings.HasPrefix(h, "/p/src/"), func() { h = strings.TrimPrefix(h, "/p/") }) kit.If(strings.HasPrefix(h, "/p/src/"), func() { h = strings.TrimPrefix(h, "/p/") })
nfs.Exists(m.Message, kit.ExtChange(h, "png"), func(p string) {
cmd := m.Target().Commands[m.CommandKey()]
cmd.Icon = m.Resource(p)
})
if path.Dir(h) != path.Dir(p) && m.CommandKey() != web.PORTAL { if path.Dir(h) != path.Dir(p) && m.CommandKey() != web.PORTAL {
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(h), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command) ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(h), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
} }
@ -91,19 +82,10 @@ func (s Table) Inputs(m *ice.Message, arg ...string) {
s.InputsList(m, PlaceTypeList, arg...) s.InputsList(m, PlaceTypeList, arg...)
case model.DOMAIN_UID: case model.DOMAIN_UID:
s.AutoCmdy(m, api.GONGANXITONG_DOMAIN).DisplayInputKeyNameIconTitle() s.AutoCmdy(m, api.GONGANXITONG_DOMAIN).DisplayInputKeyNameIconTitle()
case model.FROM_USER_UID, model.TO_USER_UID:
m.Cmdy(s.Prefix(m, member{}), m.Option(model.PLACE_UID)).Cut(model.USER_UID, model.USER_NAME, model.USER_AVATAR)
m.RenameAppend(model.USER_UID, arg[0], model.NAME, model.USER_NAME, model.USER_AVATAR, mdb.ICONS)
m.DisplayInputKeyNameIconTitle()
default: default:
s.Table.Inputs(m, arg...) s.Table.Inputs(m, arg...)
} }
} }
func (s Table) InputsUID(m *ice.Message, arg []string, target ice.Any, args ...string) {
s.Fields(m, model.UID, model.TITLE)
m.Cmdy(target, s.Select, args).RenameAppend(model.UID, arg[0])
m.DisplayInputKeyNameIconTitle()
}
func (s Table) InputsList(m *ice.Message, list ice.Any, arg ...string) { func (s Table) InputsList(m *ice.Message, list ice.Any, arg ...string) {
it := reflect.ValueOf(list).MapRange() it := reflect.ValueOf(list).MapRange()
for it.Next() { for it.Next() {
@ -137,7 +119,6 @@ func (s Table) InputsListValue(m *ice.Message, list ice.Any, key string) string
return "" return ""
} }
func (s Table) TransPrice(m *ice.Message, arg []string, field ...string) []string { func (s Table) TransPrice(m *ice.Message, arg []string, field ...string) []string {
kit.If(len(field) == 0, func() { field = append(field, "price", "amount") })
for i := 0; i < len(arg)-1; i += 2 { for i := 0; i < len(arg)-1; i += 2 {
if kit.IndexOf(field, arg[i]) > -1 { if kit.IndexOf(field, arg[i]) > -1 {
arg[i+1] = kit.Format(kit.Int(kit.Float(arg[i+1]) * 100)) arg[i+1] = kit.Format(kit.Int(kit.Float(arg[i+1]) * 100))
@ -153,7 +134,6 @@ func (s Table) ValueModel(m *ice.Message, action ice.Any, arg ...string) *ice.Me
return m.Options(arg).Cmdy(s.PrefixPortal(m), action, arg) return m.Options(arg).Cmdy(s.PrefixPortal(m), action, arg)
} }
func (s Table) ValueCreate(m *ice.Message, arg ...string) { func (s Table) ValueCreate(m *ice.Message, arg ...string) {
s.TransPrice(m, arg)
s.ValueModel(m, s.ValueCreate, arg...) s.ValueModel(m, s.ValueCreate, arg...)
s.RecordEventWithName(m, "") s.RecordEventWithName(m, "")
s.UserPlaceInit(m) s.UserPlaceInit(m)
@ -163,7 +143,6 @@ func (s Table) ValueRemove(m *ice.Message, arg ...string) {
s.RecordEventWithName(m, "") s.RecordEventWithName(m, "")
} }
func (s Table) ValueModify(m *ice.Message, arg ...string) { func (s Table) ValueModify(m *ice.Message, arg ...string) {
s.TransPrice(m, arg)
s.ValueModel(m, s.ValueModify, arg...) s.ValueModel(m, s.ValueModify, arg...)
s.RecordEventWithName(m, "") s.RecordEventWithName(m, "")
} }
@ -174,12 +153,16 @@ func (s Table) ValueList(m *ice.Message, arg []string, fields ...ice.Any) *ice.M
} }
if s.ValueModel(m, s.ValueList, arg...); len(arg) == 1 { if s.ValueModel(m, s.ValueList, arg...); len(arg) == 1 {
s.UserPlaceInit(m) s.UserPlaceInit(m)
if s.IsWorker(m) { if s.IsLeader(m) {
s.Button(m, "", s.Create) s.Button(m, "")
} else {
if m.Length() == 0 {
m.Echo("没有数据")
}
m.Action()
} }
} }
return m return s.SelectJoinUser(m)
// return s.SelectJoinUser(m)
} }
func (s Table) Create(m *ice.Message, arg ...string) { s.ValueCreate(m, arg...) } func (s Table) Create(m *ice.Message, arg ...string) { s.ValueCreate(m, arg...) }
func (s Table) Remove(m *ice.Message, arg ...string) { s.ValueRemove(m, arg...) } func (s Table) Remove(m *ice.Message, arg ...string) { s.ValueRemove(m, arg...) }
@ -207,9 +190,6 @@ func (s Table) Select(m *ice.Message, arg ...string) *ice.Message {
kit.If(m.Length() > 0, func() { s.UserPlaceInit(m) }) kit.If(m.Length() > 0, func() { s.UserPlaceInit(m) })
return m return m
} }
func (s Table) InsertIfNeed(m *ice.Message, arg ...string) {
kit.If(m.Cmd("", s.Select, arg).Length() == 0, func() { m.Cmd("", s.Insert, arg) })
}
func (s Table) InsertOrUpdate(m *ice.Message, arg []string, args ...string) { func (s Table) InsertOrUpdate(m *ice.Message, arg []string, args ...string) {
if s.Select(m, args...).Length() > 0 { if s.Select(m, args...).Length() > 0 {
s.Update(m, arg, args...) s.Update(m, arg, args...)
@ -233,7 +213,7 @@ func (s Table) SelectJoinAuth(m *ice.Message, arg ...string) *ice.Message {
return m return m
} }
kit.If(len(arg) == 0, func() { kit.If(len(arg) == 0, func() {
arg = append(arg, model.NAME, model.INFO, model.TYPE, model.STATUS, model.AVATAR, model.BACKGROUND, model.DASHBOARD_UID) arg = append(arg, model.NAME, model.INFO, model.AUTH_TYPE, model.AUTH_STATUS, model.AVATAR, model.BACKGROUND, model.DASHBOARD_UID)
}) })
defer s.SaveBack(m, ice.MSG_USERPOD, ice.MSG_USERROLE)() defer s.SaveBack(m, ice.MSG_USERPOD, ice.MSG_USERROLE)()
return s.SelectJoin(m, s.findSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), arg...) return s.SelectJoin(m, s.findSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), arg...)
@ -318,7 +298,7 @@ func (s Table) UploadCreate(m *ice.Message, field, uid string, arg ...string) st
} }
func (s Table) ChangeStatus(m *ice.Message, place_uid, uid string, from, to int, arg ...string) *ice.Message { func (s Table) ChangeStatus(m *ice.Message, place_uid, uid string, from, to int, arg ...string) *ice.Message {
msg := s.ValueList(m.Spawn(), []string{place_uid, uid}, model.STATUS) msg := s.ValueList(m.Spawn(), []string{place_uid, uid}, model.STATUS)
if !m.WarnNotValid(msg.Length() == 0 || from != kit.Int(msg.Append(mdb.STATUS)), kit.Format("%v != %v", from, kit.Int(msg.Append(mdb.STATUS)))) { if !m.WarnNotValid(msg.Length() == 0 || kit.Int(msg.Append(mdb.STATUS)) != int(from)) {
s.Update(m, kit.Dict(mdb.STATUS, to, arg), model.UID, uid) s.Update(m, kit.Dict(mdb.STATUS, to, arg), model.UID, uid)
} }
return m return m
@ -333,12 +313,6 @@ func (s Table) IsVisitor(m *ice.Message) bool {
} }
return false return false
} }
func (s Table) IsCreator(m *ice.Message) bool {
if role := kit.Int(m.Option(model.USER_ROLE)); role == 1 {
return true
}
return false
}
func (s Table) IsLeader(m *ice.Message) bool { func (s Table) IsLeader(m *ice.Message) bool {
if role := kit.Int(m.Option(model.USER_ROLE)); role == 1 || role == 2 { if role := kit.Int(m.Option(model.USER_ROLE)); role == 1 || role == 2 {
return true return true
@ -371,9 +345,7 @@ func (s Table) RecordEventWithName(m *ice.Message, info string, arg ...string) {
info = "✅ " + info info = "✅ " + info
case "placeRemove", mdb.REMOVE: case "placeRemove", mdb.REMOVE:
info = "❌ " + info info = "❌ " + info
case "placeAuth", mdb.MODIFY: case "placeAuth":
info = "🕑 " + info
default:
info = "🕑 " + info info = "🕑 " + info
} }
}) })
@ -430,39 +402,22 @@ func (s Table) DashboardUpdate(m *ice.Message, arg ...string) {
} }
m.Cmd(s.Prefix(m, Portal{}), s.DashboardUpdate) m.Cmd(s.Prefix(m, Portal{}), s.DashboardUpdate)
} }
func (s Table) MessagePlaceEnter(m *ice.Message, arg ...string) {
m.Cmdy(message{}, "placeEnter", arg)
}
func (s Table) MessagePlaceInfo(m *ice.Message, arg ...string) {
m.Cmdy(message{}, "placeInfo", arg)
}
func (s Table) MarketPlaceEnter(m *ice.Message, arg ...string) {
m.Cmdy(market{}, "placeEnter", arg)
}
func (s Table) MarketPlaceInfo(m *ice.Message, arg ...string) {
m.Cmdy(market{}, "placeInfo", arg)
}
func (s Table) MarketInsert(m *ice.Message, arg ...string) { func (s Table) MarketInsert(m *ice.Message, arg ...string) {
m.Cmdy(s.Prefix(m, Portal{}), s.MarketInsert, arg) m.Cmdy(s.Prefix(m, Portal{}), s.MarketInsert, arg)
} }
func (s Table) PushPublic(m *ice.Message, arg ...string) {
m.Cmdy(s.Prefix(m, Portal{}), s.PushPublic, arg)
}
func (s Table) ServiceList(m *ice.Message, arg ...string) *ice.Message { func (s Table) ServiceList(m *ice.Message, arg ...string) *ice.Message {
return m.Cmd(s.Prefix(m, service{}), arg) return m.Cmd(s.Prefix(m, service{}), arg)
} }
func (s Table) GetCommandUID(m *ice.Message, arg ...string) *ice.Message { func (s Table) GetCommandUID(m *ice.Message, arg ...string) {
m.Option(model.COMMAND_UID, CommandUID(m, kit.Select(m.PrefixKey(), arg, 0))) m.Option(model.COMMAND_UID, CommandUID(m, kit.Select(m.PrefixKey(), arg, 0)))
return m
} }
func (s Table) SendMessage(m *ice.Message, from, to string, arg ...string) { func (s Table) SendMessage(m *ice.Message, from, to string, arg ...string) {
if m.IsErr() { if m.IsErr() {
return return
} }
kit.If(len(arg) == 0, func() { arg = append(arg, m.Option(model.PLACE_UID), kit.Select(m.Option(model.UID), m.Result())) })
m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), s.Create, m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), s.Create,
model.FROM_USER_UID, kit.Select(m.Option(model.USER_UID), from), model.TO_USER_UID, kit.Select(m.Option(model.USER_UID), to), model.FROM_USER_UID, kit.Select(m.Option(model.USER_UID), from), model.TO_USER_UID, kit.Select(m.Option(model.USER_UID), to),
m.OptionSimple(model.COMMAND_UID), model.ARGS, kit.Join(arg), m.OptionSimple(model.TITLE, model.CONTENT), m.OptionSimple(model.COMMAND_UID), model.ARGS, kit.Join(arg),
) )
} }
func (s Table) DoneMessage(m *ice.Message, arg ...string) { func (s Table) DoneMessage(m *ice.Message, arg ...string) {
@ -512,8 +467,7 @@ func (s Table) Display(m *ice.Message, file string) *ice.Message {
} }
if m.Template(file) == "" { if m.Template(file) == "" {
if m.CommandKey() == web.PORTAL { if m.CommandKey() == web.PORTAL {
// file = m.Resource(path.Join(base, "portal.js")) file = m.Resource(path.Join(base, "portal.js"))
file = m.Resource(path.Join(sub, "portal.js"))
} else { } else {
file = m.Resource(path.Join(base, "common.js")) file = m.Resource(path.Join(base, "common.js"))
} }
@ -611,19 +565,12 @@ func PortalCmd(portal ice.Any) {
return return
} }
cmd.RawHand = path.Join(path.Dir(h), name+".go") cmd.RawHand = path.Join(path.Dir(h), name+".go")
what := kit.FileLine(1, 100)
// cmd.Icon = path.Join(path.Dir(what), name) + ".png"
nfs.Exists(ice.Pulse, path.Join(path.Dir(what), name)+".png", func(p string) {
cmd.Icon = "/p/src/gonganxitong/" + name + ".png?pod=20240724-community"
// ice.Pulse.Resource(p)
})
cmd.Actions[ice.CTX_INIT].Hand = icebergs.MergeHand(func(m *icebergs.Message, arg ...string) { cmd.Actions[ice.CTX_INIT].Hand = icebergs.MergeHand(func(m *icebergs.Message, arg ...string) {
m.Design(mdb.LIST, "", kit.JoinWord(table.Keys(table.Place, model.UID), model.UID, ice.AUTO)) m.Design(mdb.LIST, "", kit.JoinWord(table.Keys(table.Place, model.UID), model.UID, ice.AUTO))
mdb.Config(m, db.DOMAIN, kit.PathName(1)) mdb.Config(m, db.DOMAIN, kit.PathName(1))
}, cmd.Actions[ice.CTX_INIT].Hand) }, cmd.Actions[ice.CTX_INIT].Hand)
} }
cmd("portal", portal) cmd("portal", portal)
cmd("goodslist", goodslist{Table: table}) cmd("goodslist", goodslist{Table: table})
cmd("quotalist", quotalist{Table: table}) cmd("quotalist", quotalist{Table: table})
cmd("spendlist", spendlist{Table: table}) cmd("spendlist", spendlist{Table: table})
@ -632,7 +579,6 @@ func PortalCmd(portal ice.Any) {
cmd("document", document{Table: table}) cmd("document", document{Table: table})
cmd("contract", contract{Table: table}) cmd("contract", contract{Table: table})
cmd("photo", photo{Table: table}) cmd("photo", photo{Table: table})
cmd("credit", credit{Tables: tables}) cmd("credit", credit{Tables: tables})
cmd("member", member{Tables: tables}) cmd("member", member{Tables: tables})
cmd("setting", setting{Table: table}) cmd("setting", setting{Table: table})

View File

@ -25,7 +25,7 @@ func (s credit) List(m *ice.Message, arg ...string) {
m.ProcessField(api.RENZHENGSHOUQUAN_PROFILE, msg.Append(model.AUTH_UID)) m.ProcessField(api.RENZHENGSHOUQUAN_PROFILE, msg.Append(model.AUTH_UID))
return return
} }
if !s.IsLeader(m) { if !s.IsWorker(m) {
m.Echo("本服务暂未申请认证") m.Echo("本服务暂未申请认证")
return return
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -8,24 +8,19 @@ import (
type domain struct { type domain struct {
Table Table
fields string `name:"name,order"`
create string `name:"create name* info" role:"tech"` create string `name:"create name* info" role:"tech"`
remove string `name:"remove" role:"tech"` remove string `name:"remove" role:"tech"`
list string `name:"list domain_uid auto" role:"void"` list string `name:"list domain_uid auto" role:"void"`
} }
func (s domain) Create(m *ice.Message, arg ...string) { s.Insert(m, arg...) } func (s domain) Create(m *ice.Message, arg ...string) { s.Insert(m, arg...) }
func (s domain) Modify(m *ice.Message, arg ...string) {
s.Update(m, arg, model.UID, m.Option(model.DOMAIN_UID))
}
func (s domain) Remove(m *ice.Message, arg ...string) { func (s domain) Remove(m *ice.Message, arg ...string) {
s.Delete(m.Options(model.UID, m.Option(model.DOMAIN_UID))) s.Delete(m.Options(model.UID, m.Option(model.DOMAIN_UID)))
} }
func (s domain) List(m *ice.Message, arg ...string) { func (s domain) List(m *ice.Message, arg ...string) {
s.Fields(m, model.UID, model.NAME, "order") s.Fields(m, model.UID, model.NAME)
if len(arg) == 0 { if len(arg) == 0 {
s.Select(m).RenameAppend(model.UID, model.DOMAIN_UID).Action() s.Select(m).RenameAppend(model.UID, model.DOMAIN_UID).Action()
m.SortInt("order")
} else if len(arg) == 1 { } else if len(arg) == 1 {
s.SelectDetail(m, model.UID, arg[0]) s.SelectDetail(m, model.UID, arg[0])
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,6 +0,0 @@
$output div.item.card div.output div.title {
margin-top:10px;
}
$output div.item.card div.output {
padding:20px 10px;
}

View File

@ -50,7 +50,7 @@ func (s market) List(m *ice.Message, arg ...string) {
s.SelectJoinRecent(m, model.PLACE_UID) s.SelectJoinRecent(m, model.PLACE_UID)
s.SelectJoinUser(m, model.NAME, model.AVATAR, model.AUTH_UID) s.SelectJoinUser(m, model.NAME, model.AVATAR, model.AUTH_UID)
s.SelectJoinAuth(m) s.SelectJoinAuth(m)
s.DisplayBase(m, "").DisplayCSS("") s.DisplayBase(m, "")
} }
func (s market) ThumbToggle(m *ice.Message, arg ...string) { func (s market) ThumbToggle(m *ice.Message, arg ...string) {
m.OptionDefault(model.MARKET_UID, m.Option(model.UID)) m.OptionDefault(model.MARKET_UID, m.Option(model.UID))
@ -76,21 +76,5 @@ func (s market) FavorToggle(m *ice.Message, arg ...string) {
func (s market) ShareCreate(m *ice.Message, arg ...string) { func (s market) ShareCreate(m *ice.Message, arg ...string) {
s.AddCount(m, model.SHARE_COUNT, "1") s.AddCount(m, model.SHARE_COUNT, "1")
} }
func (s market) PlaceEnter(m *ice.Message, arg ...string) {
// m.ProcessField()
}
func (s market) PlaceInfo(m *ice.Message, arg ...string) {
s.Tables(m, s.command, s.service, s.LeftJoinValue(m, s.thumb, s), s.LeftJoinValue(m, s.favor, s)).FieldsWithCreatedAT(m, s,
s.Key(s, model.USER_UID), model.PLACE_UID, model.SERVICE_NAME, model.TITLE, model.CONTENT,
model.THUMB_COUNT, model.COMMENT_COUNT, model.FAVOR_COUNT, model.SHARE_COUNT, model.THUMB_STATUS, model.FAVOR_STATUS,
s.AS(model.NODENAME, model.SPACE), s.Key(s.command, model.INDEX), model.ARGS,
model.COMMAND_NAME,
)
s.Select(m, s.Key(s, model.UID), m.Option(model.MARKET_UID))
s.SelectJoinRecent(m, model.PLACE_UID)
s.SelectJoinUser(m, model.NAME, model.AVATAR, model.AUTH_UID)
s.SelectJoinAuth(m)
m.PushAction(s.MarketPlaceEnter)
}
func init() { ice.TeamCtxCmd(market{Table: newTable()}) } func init() { ice.TeamCtxCmd(market{Table: newTable()}) }

View File

@ -5,7 +5,7 @@ Volcanos(chat.ONIMPORT, {
can.onmotion.select(can, can.ui.tabs, html.DIV_ITEM, event.target), can.run(event, [], function(msg) { can.onimport._data(can, msg) }) can.onmotion.select(can, can.ui.tabs, html.DIV_ITEM, event.target), can.run(event, [], function(msg) { can.onimport._data(can, msg) })
}}]) }}])
can.page.Append(can, can.ui.tabs, msg.Table(function(value) { can.page.Append(can, can.ui.tabs, msg.Table(function(value) {
return {view: [[html.ITEM, value.domain_uid == domain_uid? html.SELECT: ""], "", value.name], onclick: function(event) { can.misc.Cookie(can, "domain_uid", value.domain_uid) return {view: [[html.ITEM, value.uid == domain_uid? html.SELECT: ""], "", value.name], onclick: function(event) { can.misc.Cookie(can, "domain_uid", value.uid)
can.onmotion.select(can, can.ui.tabs, html.DIV_ITEM, event.target), can.run(event, [], function(msg) { can.onimport._data(can, msg) }) can.onmotion.select(can, can.ui.tabs, html.DIV_ITEM, event.target), can.run(event, [], function(msg) { can.onimport._data(can, msg) })
}} }}
})) }))
@ -17,12 +17,13 @@ Volcanos(chat.ONIMPORT, {
{text: [value.user_name, "", aaa.USERNAME]}, can.onimport.authView(can, value), can.onimport.timeView(can, value), {text: [value.user_name, "", aaa.USERNAME]}, can.onimport.authView(can, value), can.onimport.timeView(can, value),
]}, ]},
{view: html.STATUS, list: [ {view: html.STATUS, list: [
{text: [value.city_name, "", "city"]}, // {text: [value.city_name, "", "city"]},
{text: [value.street_name, "", "street"]}, {text: [value.street_name, "", "street"]},
{text: [value.place_name, "", "place"]}, {text: [value.place_name, "", "place"]},
{text: [value.service_name, "", "service"]}, {text: [value.command_name, "", "command"]},
// {text: [value.service_name.split(" ")[0], "", "service"]},
]}, ]},
{view: html.TITLE, list: [value.command_name, value.title]}, {view: html.OUTPUT, list: [value.title]},
{view: html.OUTPUT, list: [value.content]}, {view: html.OUTPUT, list: [value.content]},
{view: html.ACTION, list: [ {view: html.ACTION, list: [
{view: html.ITEM, list: [{icon: "bi bi-hand-thumbs-up"}, {text: value.thumb_count||"点赞"}], onclick: function(event) { {view: html.ITEM, list: [{icon: "bi bi-hand-thumbs-up"}, {text: value.thumb_count||"点赞"}], onclick: function(event) {

View File

@ -29,7 +29,7 @@ func (s meeting) Enter(m *ice.Message, arg ...string) { m.ProcessOpen(m.Option(
func (s meeting) List(m *ice.Message, arg ...string) { func (s meeting) List(m *ice.Message, arg ...string) {
if s.cmdy(m, s.MeetingList, arg[1:]...); m.Length() > 0 { if s.cmdy(m, s.MeetingList, arg[1:]...); m.Length() > 0 {
if len(arg) == 1 { if len(arg) == 1 {
m.PushAction(s.Enter, s.Modify, s.Cancel).Action(s.Create).Display("").DisplayCSS("") m.PushAction(s.Enter, s.Modify, s.Cancel).Action(s.Create).Display("")
s.SpendlistCheck(m, 0) s.SpendlistCheck(m, 0)
} else if m.IsMobileUA() { } else if m.IsMobileUA() {
m.EchoQRCode(m.Append(model.LINK)).Display("").DisplayCSS("") m.EchoQRCode(m.Append(model.LINK)).Display("").DisplayCSS("")

View File

@ -1,2 +1 @@
$output>div.item.myself div.title span { font-weight:bold; } $output>div.item.myself div.title span { font-weight:bold; }
$output>div.item.card div.title span.role { margin-left:auto; }

View File

@ -2,7 +2,6 @@ package gonganxitong
import ( import (
"shylinux.com/x/ice" "shylinux.com/x/ice"
"shylinux.com/x/icebergs/base/web/html"
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
"shylinux.com/x/community/src/gonganxitong/model" "shylinux.com/x/community/src/gonganxitong/model"
@ -16,44 +15,25 @@ type member struct {
remove string `name:"remove" role:"void"` remove string `name:"remove" role:"void"`
enable string `name:"enable" role:"void"` enable string `name:"enable" role:"void"`
disable string `name:"disable" role:"void"` disable string `name:"disable" role:"void"`
promote string `name:"promote" role:"void"`
demote string `name:"demote" role:"void"`
} }
func (s member) Remove(m *ice.Message, arg ...string) { func (s member) Remove(m *ice.Message, arg ...string) {
if s.IsLeader(m) { if s.IsLeader(m) {
m.Cmdy(s.UserPlace, s.Delete, s.option(m, model.ROLE, kit.Format(UserPlaceTenant), model.STATUS, kit.Format(MemberDisabled))) m.Cmdy(s.UserPlace, s.Delete, s.option(m))
s.recordEvent(m, "❌", m.Trans("remove member", "删除成员"), html.DANGER)
}
}
func (s member) Disable(m *ice.Message, arg ...string) {
if s.IsLeader(m) {
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberDisabled, s.option(m, model.ROLE, kit.Format(UserPlaceTenant)))
s.recordEvent(m, "❌", m.Trans("disable member", "禁用成员"), html.DANGER)
}
}
func (s member) Demote(m *ice.Message, arg ...string) {
if s.IsCreator(m) {
m.Cmdy(s.UserPlace, s.UpdateField, model.ROLE, kit.Format(UserPlaceTenant), s.option(m))
s.recordEvent(m, "❌", m.Trans("demote worker", "降级成为工作人员"), html.DANGER)
}
}
func (s member) Promote(m *ice.Message, arg ...string) {
if s.IsCreator(m) {
m.Cmdy(s.UserPlace, s.UpdateField, model.ROLE, kit.Format(UserPlaceLandlord), s.option(m))
s.recordEvent(m, "✅", m.Trans("promote leader", "升级成为管理人员"), html.NOTICE)
} }
} }
func (s member) Enable(m *ice.Message, arg ...string) { func (s member) Enable(m *ice.Message, arg ...string) {
if s.IsLeader(m) { if s.IsLeader(m) {
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberNormal, s.option(m, model.ROLE, kit.Format(UserPlaceTenant))) m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberNormal, s.option(m))
s.recordEvent(m, "✅", m.Trans("enable member", "启用成员"), html.NOTICE) }
}
func (s member) Disable(m *ice.Message, arg ...string) {
if s.IsLeader(m) {
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberDisabled, s.option(m))
} }
} }
func (s member) List(m *ice.Message, arg ...string) { func (s member) List(m *ice.Message, arg ...string) {
USER_PLACE_ROLE := s.Keys(s.UserPlace, model.ROLE) user_uid, isLeader := m.Option(model.USER_UID), s.IsLeader(m)
s.Limit(m, 1000)
user_uid, isLeader, isCreator := m.Option(model.USER_UID), s.IsLeader(m), s.IsCreator(m)
s.FieldsWithCreatedAT(m, s.UserPlace, model.USER_UID, s.Keys(s.UserPlace, model.ROLE), s.AS(s.Key(s.UserPlace, model.STATUS), model.MEMBER_STATUS)) s.FieldsWithCreatedAT(m, s.UserPlace, model.USER_UID, s.Keys(s.UserPlace, model.ROLE), s.AS(s.Key(s.UserPlace, model.STATUS), model.MEMBER_STATUS))
if len(arg) == 1 { if len(arg) == 1 {
m.Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0]).Action() m.Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0]).Action()
@ -62,7 +42,6 @@ func (s member) List(m *ice.Message, arg ...string) {
} else { } else {
return return
} }
defer m.Sort(kit.Fields(model.MEMBER_STATUS, USER_PLACE_ROLE, model.CREATED_AT))
m.Table(func(value ice.Maps) { m.Table(func(value ice.Maps) {
if !m.FieldsIsDetail() { if !m.FieldsIsDetail() {
if user_uid == value[model.USER_UID] { if user_uid == value[model.USER_UID] {
@ -71,47 +50,29 @@ func (s member) List(m *ice.Message, arg ...string) {
m.Push("who", "") m.Push("who", "")
} }
} }
button := []ice.Any{} if isLeader {
if MemberStatus(kit.Int(value[model.MEMBER_STATUS])) == MemberNormal { if user_uid == value[model.USER_UID] {
if isCreator { m.PushButton()
switch kit.Int(value[USER_PLACE_ROLE]) { } else {
case 2: if MemberStatus(kit.Int(value[model.MEMBER_STATUS])) == MemberNormal {
button = append(button, s.Demote) m.PushButton(s.Disable)
case 3: } else {
button = append(button, s.Promote) m.PushButton(s.Enable, s.Remove)
}
}
if isLeader {
switch kit.Int(value[USER_PLACE_ROLE]) {
case 3:
button = append(button, s.Disable)
} }
} }
} else { } else {
if isCreator { m.PushButton()
button = append(button, s.Enable, s.Remove)
} else if isLeader {
switch kit.Int(value[USER_PLACE_ROLE]) {
case 3:
button = append(button, s.Enable, s.Remove)
}
}
} }
m.PushButton(button...)
}) })
s.SelectJoinUser(m, model.NAME, model.INFO, model.AVATAR, model.AUTH_UID) s.SelectJoinUser(m, model.NAME, model.INFO, model.AVATAR, model.AUTH_UID)
s.SelectJoinAuth(m) s.SelectJoinAuth(m)
s.DisplayBase(m, "").DisplayCSS("") s.DisplayBase(m, "").DisplayCSS("")
m.Echo("count: %d", m.Length())
} }
func init() { ice.TeamCtxCmd(member{Tables: newTables()}) } func init() { ice.TeamCtxCmd(member{Tables: newTables()}) }
func (s member) option(m *ice.Message, arg ...string) []string { func (s member) option(m *ice.Message, arg ...string) []string {
return kit.Simple(m.OptionSimple(s.Keys(s.Place, model.UID), model.UID), arg) return m.OptionSimple(s.Keys(s.Place, model.UID), model.UID)
}
func (s member) recordEvent(m *ice.Message, icon, title, style string, arg ...string) {
s.RecordEvent(m, kit.JoinWord(icon, title, kit.Cut(m.Option(model.UID), 6), s.TransRole(m, "", style), m.Option(model.USER_NAME)), m.Option(model.UID))
} }
type MemberStatus int type MemberStatus int

View File

@ -6,10 +6,9 @@ Volcanos(chat.ONIMPORT, {
{view: html.TITLE, list: [value.user_name, {view: html.TITLE, list: [value.user_name,
can.onimport.authView(can, value), can.onimport.textView(can, value, USER_PLACE_ROLE), can.onimport.authView(can, value), can.onimport.textView(can, value, USER_PLACE_ROLE),
value.member_status != "normal" && can.onimport.textView(can, value, "member_status"), value.member_status != "normal" && can.onimport.textView(can, value, "member_status"),
// can.onimport.titleAction(can, value), can.onimport.titleAction(can, value),
]}, ]},
{view: html.STATUS, list: [value.user_info]}, {view: html.STATUS, list: [value.user_info]},
can.onimport.titleAction(can, value),
] ]
}) })
}, },

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -35,7 +35,6 @@ func (s message) List(m *ice.Message, arg ...string) {
model.FROM_USER_UID, model.COMMAND_NAME, model.MESSAGE_STATUS, model.SCORE, model.FROM_USER_UID, model.COMMAND_NAME, model.MESSAGE_STATUS, model.SCORE,
model.PLACE_UID, model.SERVICE_NAME, model.PLACE_UID, model.SERVICE_NAME,
s.AS(model.NODENAME, model.SPACE), s.Key(s.command, model.INDEX), model.ARGS, s.AS(model.NODENAME, model.SPACE), s.Key(s.command, model.INDEX), model.ARGS,
model.TITLE, model.CONTENT,
) )
if len(arg) < 2 { if len(arg) < 2 {
args := []string{model.TO_USER_UID, m.Option(model.USER_UID)} args := []string{model.TO_USER_UID, m.Option(model.USER_UID)}
@ -64,19 +63,8 @@ func (s message) List(m *ice.Message, arg ...string) {
}).Action() }).Action()
m.RenameAppend(model.FROM_USER_UID, model.USER_UID) m.RenameAppend(model.FROM_USER_UID, model.USER_UID)
s.SelectJoinRecent(m, model.PLACE_UID) s.SelectJoinRecent(m, model.PLACE_UID)
// s.SelectJoinUser(m) s.SelectJoinUser(m)
s.DisplayBase(m, "") s.DisplayBase(m, "")
msg := m.Spawn()
s.Fields(msg, "status, count(*) AS count").Groups(msg, model.STATUS).Orders(msg, model.STATUS)
s.Select(msg, args...).Table(func(value ice.Maps) {
switch status := kit.Int(value[model.STATUS]); m.CommandKey() {
default:
m.Echo(MessageStatus(status).String()).Echo(": ")
m.Echo(value[model.COUNT]).Echo("\n")
}
})
} else if len(arg) == 2 { } else if len(arg) == 2 {
msg := s.SelectDetail(m.Spawn(), model.TO_USER_UID, m.Option(model.USER_UID), s.Key(s, model.UID), arg[1]) msg := s.SelectDetail(m.Spawn(), model.TO_USER_UID, m.Option(model.USER_UID), s.Key(s, model.UID), arg[1])
s.ProcessPodCmd(m, msg, model.MESSAGE_UID, arg[1]) s.ProcessPodCmd(m, msg, model.MESSAGE_UID, arg[1])
@ -97,23 +85,6 @@ func (s message) Sticky(m *ice.Message, arg ...string) {
func (s message) UnSticky(m *ice.Message, arg ...string) { func (s message) UnSticky(m *ice.Message, arg ...string) {
s.update(m, ice.Map{model.SCORE: 0}) s.update(m, ice.Map{model.SCORE: 0})
} }
func (s message) PlaceEnter(m *ice.Message, arg ...string) {
// m.ProcessField()
}
func (s message) PlaceInfo(m *ice.Message, arg ...string) {
s.Tables(m, s.command, s.service).FieldsWithCreatedAT(m, s,
model.FROM_USER_UID, model.COMMAND_NAME, model.MESSAGE_STATUS, model.SCORE,
model.PLACE_UID, model.SERVICE_NAME,
s.AS(model.NODENAME, model.SPACE), s.Key(s.command, model.INDEX), model.ARGS,
model.TITLE, model.CONTENT,
)
s.Select(m, s.Key(s, model.UID), m.Option(model.MESSAGE_UID))
m.RenameAppend(model.FROM_USER_UID, model.USER_UID)
s.SelectJoinRecent(m, model.PLACE_UID)
s.SelectJoinUser(m, model.NAME, model.AVATAR, model.AUTH_UID)
s.SelectJoinAuth(m)
m.PushAction(s.MessagePlaceEnter)
}
func init() { ice.TeamCtxCmd(message{Table: newTable()}) } func init() { ice.TeamCtxCmd(message{Table: newTable()}) }

View File

@ -5,15 +5,10 @@ Volcanos(chat.ONIMPORT, {
can.onimport.myView(can, msg, function(value) { var args = can.core.Split(value.args) can.onimport.myView(can, msg, function(value) { var args = can.core.Split(value.args)
value.icons = value.user_avatar||value.icons; if (value.score > 0) { value._style = ["sticky"] } value.icons = value.user_avatar||value.icons; if (value.score > 0) { value._style = ["sticky"] }
return [ return [
{view: html.TITLE, list: [ {view: html.TITLE, list: [value.place_name, value.command_name, value.detail||(args[1]||"").slice(0, 6), can.onimport.textView(can, value)]},
value.command_name, value.title, can.onimport.textView(can, value), {view: html.STATUS, list: [value.city_name, value.street_name, value.service_name]},
]}, {view: html.STATUS, list: [can.onimport.timeView(can, value), value.user_name]},
{view: html.STATUS, list: [ value.info && {view: html.OUTPUT, list: [value.info]},
value.detail||(args[1]||"").slice(0, 6),
can.onimport.timeView(can, value), value.user_name,
]},
{view: html.STATUS, list: [value.city_name, value.street_name, value.place_name, value.service_name]},
{view: html.OUTPUT, list: [value.content]},
] ]
}) })
}, },

View File

@ -163,19 +163,6 @@ type Goodslist struct {
Amount int `gorm:"default:0"` Amount int `gorm:"default:0"`
ExpireTime db.Time ExpireTime db.Time
} }
type Paymentlist struct {
db.ModelWithUID
PlaceUID string `gorm:"type:char(32);index"`
UserUID string `gorm:"type:char(32)"`
GoodslistUID string `gorm:"type:char(32)"`
VendorUID string `gorm:"type:char(32)"`
Vendor string `gorm:"type:varchar(128)"`
Title string `gorm:"type:varchar(128)"`
Content string `gorm:"type:varchar(128)"`
Amount int32 `gorm:"default:0"`
Status uint8 `gorm:"default:0"`
Type uint8 `gorm:"default:0"`
}
type Quotalist struct { type Quotalist struct {
db.ModelWithUID db.ModelWithUID
PlaceUID string `gorm:"type:char(32);index"` PlaceUID string `gorm:"type:char(32);index"`
@ -197,6 +184,19 @@ type Spendlist struct {
Count int `gorm:"default:0"` Count int `gorm:"default:0"`
ExpireTime db.Time ExpireTime db.Time
} }
type Paymentlist struct {
db.ModelWithUID
PlaceUID string `gorm:"type:char(32);index"`
UserUID string `gorm:"type:char(32)"`
GoodslistUID string `gorm:"type:char(32)"`
VendorUID string `gorm:"type:char(32)"`
Vendor string `gorm:"type:varchar(128)"`
Title string `gorm:"type:varchar(128)"`
Content string `gorm:"type:varchar(128)"`
Amount int32 `gorm:"default:0"`
Status uint8 `gorm:"default:0"`
Type uint8 `gorm:"default:0"`
}
type Meeting struct { type Meeting struct {
db.ModelWithUID db.ModelWithUID
PlaceUID string `gorm:"type:char(32);index"` PlaceUID string `gorm:"type:char(32);index"`
@ -225,7 +225,6 @@ type Photo struct {
Vendor string `gorm:"type:varchar(128)"` Vendor string `gorm:"type:varchar(128)"`
ExpireTime db.Time ExpireTime db.Time
} }
type Setting struct { type Setting struct {
db.ModelWithUID db.ModelWithUID
PlaceUID string `gorm:"type:char(32);index"` PlaceUID string `gorm:"type:char(32);index"`
@ -233,6 +232,7 @@ type Setting struct {
Name string `gorm:"type:varchar(64)"` Name string `gorm:"type:varchar(64)"`
Value string `gorm:"type:varchar(255)"` Value string `gorm:"type:varchar(255)"`
} }
type Apply struct { type Apply struct {
db.ModelWithUID db.ModelWithUID
PlaceUID string `gorm:"type:char(32);index:idx_place"` PlaceUID string `gorm:"type:char(32);index:idx_place"`
@ -260,16 +260,15 @@ type Notice struct {
PlaceUID string `gorm:"type:char(32);index"` PlaceUID string `gorm:"type:char(32);index"`
UserUID string `gorm:"type:char(32)"` UserUID string `gorm:"type:char(32)"`
} }
type Domain struct { type Domain struct {
db.ModelNameInfo db.ModelNameInfo
Order int `gorm:"default:0"`
} }
type Market struct { type Market struct {
db.ModelContent db.ModelContent
DomainUID string `gorm:"type:char(32);index"` DomainUID string `gorm:"type:char(32);index"`
CommandUID string `gorm:"type:char(32)"`
PlaceUID string `gorm:"type:char(32)"` PlaceUID string `gorm:"type:char(32)"`
UserUID string `gorm:"type:char(32)"`
CommandUID string `gorm:"type:char(32)"`
Args string `gorm:"type:varchar(128)"` Args string `gorm:"type:varchar(128)"`
ThumbCount int `gorm:"default:0"` ThumbCount int `gorm:"default:0"`
CommentCount int `gorm:"default:0"` CommentCount int `gorm:"default:0"`
@ -303,11 +302,11 @@ type Command struct {
Icon string `gorm:"type:varchar(128)"` Icon string `gorm:"type:varchar(128)"`
} }
type Message struct { type Message struct {
db.ModelContent db.ModelWithUID
PlaceUID string `gorm:"type:char(32)"`
FromUserUID string `gorm:"type:char(32)"` FromUserUID string `gorm:"type:char(32)"`
ToUserUID string `gorm:"type:char(32);index"` ToUserUID string `gorm:"type:char(32);index"`
CommandUID string `gorm:"type:char(32)"` CommandUID string `gorm:"type:char(32)"`
PlaceUID string `gorm:"type:char(32)"`
Args string `gorm:"type:varchar(128)"` Args string `gorm:"type:varchar(128)"`
Status uint `gorm:"default:0"` Status uint `gorm:"default:0"`
Score uint `gorm:"default:0"` Score uint `gorm:"default:0"`
@ -345,9 +344,9 @@ type Support struct {
func init() { func init() {
db.CmdModels("", db.CmdModels("",
&Sess{}, &User{}, &UserPlace{}, &Place{}, &Street{}, &City{}, &Sess{}, &User{}, &UserPlace{}, &Place{}, &Street{}, &City{},
&Goodslist{}, &Paymentlist{}, &Quotalist{}, &Spendlist{}, &Paymentlist{}, &Meeting{}, &Document{}, &Contract{}, &Photo{}, &Setting{},
&Meeting{}, &Document{}, &Contract{}, &Photo{}, &Goodslist{}, &Quotalist{}, &Spendlist{},
&Setting{}, &Apply{}, &Allow{}, &Event{}, &Notice{}, &Apply{}, &Allow{}, &Event{}, &Notice{},
&Domain{}, &Market{}, &Thumb{}, &Comment{}, &Favor{}, &Domain{}, &Market{}, &Thumb{}, &Comment{}, &Favor{},
&Command{}, &Message{}, &Recent{}, &Service{}, &Support{}, &Command{}, &Message{}, &Recent{}, &Service{}, &Support{},
) )

View File

@ -41,9 +41,8 @@ func (s notice) List(m *ice.Message, arg ...string) {
return return
} }
kit.If(s.IsLeader(m), func() { kit.If(s.IsLeader(m), func() {
if m.PushAction(s.Remove); m.Length() == 0 { m.PushAction(s.Remove)
s.Button(m, "") s.Button(m, "")
}
}, func() { }, func() {
m.Action() m.Action()
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 KiB

View File

@ -1,17 +1,13 @@
$body:not(.mobile) { background-color:var(--notice-bg-color); } body.dark { --plugin-bg-color:#0d1117; --output-bg-color:#171a22; }
$body.dark { --plugin-bg-color:#0d1117; --output-bg-color:#171a22; } body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:#fefefd; }
$body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:#fefefd; } body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:white; }
$body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:white; } body.width1.light { --plugin-bg-color:#f3f3f4; --output-bg-color:white; --notice-bg-color:#006fff; }
$body.width1.light { --plugin-bg-color:#f3f3f4; --output-bg-color:white; --notice-bg-color:#006fff; } body.width1 fieldset.Action div.input.float { position:static; }
$body.width1 fieldset.Action div.input.float { position:static; } body.width1 fieldset.Action div.input.float table { width:100%; }
$body.width1 fieldset.Action div.input.float table { width:100%; } body.width1 div.upload.float div.action { display:flex; }
$body.width1 div.upload.float div.action { display:flex; } body.width1 div.upload.float div.action div.item.upload { flex-grow:1; }
$body.width1 div.upload.float div.action div.item.upload { flex-grow:1; } body.width1 div.upload.float div.action div.item.upload input { width:100%; }
$body.width1 div.upload.float div.action div.item.upload input { width:100%; } $action { background-color:transparent; position:absolute; top:0; width:100%; z-index:1; }
$body.width1 $action div.item.text.filter { flex-grow:1; }
$action { background-color:transparent; position:absolute; top:0; width:100%; z-index:1; display:none; }
$action div.item:last-child { margin-right:10px; }
$action div.item.text.filter input { width:100%; }
$action div.item { margin-left:10px; margin-right:0; padding:0; height:48px; align-items:center; } $action div.item { margin-left:10px; margin-right:0; padding:0; height:48px; align-items:center; }
$action div.item.button input { border:none; background-color:var(--plugin-bg-color); color:var(--notice-bg-color); min-width:60px; display:unset; } $action div.item.button input { border:none; background-color:var(--plugin-bg-color); color:var(--notice-bg-color); min-width:60px; display:unset; }
$action div.item.button input:hover { background-color:var(--hover-bg-color); } $action div.item.button input:hover { background-color:var(--hover-bg-color); }
@ -19,45 +15,32 @@ $action div.item.button span { display:none; }
$action div.item.button i { display:none; } $action div.item.button i { display:none; }
$output div.title div.action div.item.notice input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } $output div.title div.action div.item.notice input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
$output { background-color:var(--plugin-bg-color); } $output { background-color:var(--plugin-bg-color); }
$output>div.header { background-image:linear-gradient(var(--notice-bg-color), var(--plugin-bg-color)); height:240px; width:100%; position:absolute; left:0; } $output>div.header { background-image:linear-gradient(var(--notice-bg-color), var(--plugin-bg-color)); height:300px; width:100%; position:absolute; left:0; }
$body.light $output>div.header { background-image:linear-gradient(#dbe7fe, var(--plugin-bg-color)); height:240px; width:100%; position:absolute; left:0; }
$output>div.header img { height:100%; width:100%; object-fit:cover; } $output>div.header img { height:100%; width:100%; object-fit:cover; }
$output>div.action>div.list { margin:0 10px; }
$output div.output>div.code { font-size:16px; position:relative; } $output div.output>div.code { font-size:16px; position:relative; }
$output div.output>div.code img.avatar { $output table.content.detail thead { display:none; }
border-radius:10px; object-fit:cover; --qrcode-icon-height:48px; $output div.output>div.code img.avatar { border-radius:10px; height:64px !important; width:64px !important; object-fit:cover; position:absolute; top:153px; left:calc(50% - 32px); }
height:var(--qrcode-icon-height) !important; width:var(--qrcode-icon-height) !important; body.width6 $output>div.output>div.code img.avatar { top:183px; }
position:absolute; top:calc(50% - var(--qrcode-icon-height) / 2 - 16px); left:calc(50% - var(--qrcode-icon-height) / 2); $output>div.action>div.list { margin:0 10px; }
} $output>div>div.code { margin-bottom:240px; display:flex; flex-direction:column; align-items:center; }
$output>div>div.code { margin-bottom:20px; display:flex; flex-direction:column; align-items:center; }
$output>div>div.list { border-radius:10px; background-color:var(--output-bg-color); padding:10px; margin:10px; } $output>div>div.list { border-radius:10px; background-color:var(--output-bg-color); padding:10px; margin:10px; }
$output>div>div.list.myplace>div.output { padding:0 10px; max-height:320px; } $output>div>div.list.myplace>div.output { padding:0 10px; max-height:320px; }
$output>div>div.list.myplace>div.output>div.item>div.output div.title span.type { line-height:18px; }
$output>div>div.list.myplace>div.output>div.item>div.output div.title span.role { line-height:18px; }
$output>div>div.list.myplace>div.output>div.item>div.output div.title { margin-bottom:5px; }
$output>div>div.list.mynotice { cursor:pointer; } $output>div>div.list.mynotice { cursor:pointer; }
$output>div>div.list.mynotice:not(.hide) { display:flex; align-items:center; } $output>div>div.list.mynotice:not(.hide) { display:flex; align-items:center; }
$output>div>div.list.mynotice>span.title { flex-grow:1; margin:0 5px; } $output>div>div.list.mynotice>span.title { flex-grow:1; margin:0 5px; }
$output>div>div.list.mynotice>span:not(.title) { white-space:pre; }
$output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:0 5px; margin-right:5px; } $output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:0 5px; margin-right:5px; }
$output>div>div.list.mynotice>span:last-child { color:gray; } $output>div>div.list.mynotice>span:last-child { color:gray; }
$output>div>div.list.mylist>fieldset>div.output { max-height:none !important; } $output>div>div.list>div.title { font-weight:bold; display:flex; align-items:center; }
$output>div>div.list>div.title { font-weight:bold; display:flex; align-items:center; border-left:var(--box-notice3); padding-left:10px; }
body.width1 $output fieldset.story>div.output>div.place_info { min-height:68px; }
body.width1 $output fieldset.story>div.output>div.place_info>div.item>div.output { background-color:var(--plugin-bg-color); }
body.width1 $output fieldset.story>div.output>table.detail tr.user_name { display:none; }
body.width1 $output fieldset.story>div.output>table.detail tr.user_avatar { display:none; }
body.width1 $output fieldset.story>div.output>table.detail tr.created_at { display:none; }
$output>div>div.list.myallow>div.title { border-left:var(--box-danger3); padding-left:10px; }
$output>div>div.list.myorder>div.title { border-left:var(--box-danger3); padding-left:10px; }
$output>div>div.list>div.title span:first-child { flex-grow:1; } $output>div>div.list>div.title span:first-child { flex-grow:1; }
$output>div>div.list>div.title div.action div.item.filter input:focus { width:320px; transition:width 0.5s; } $output>div>div.list>div.title div.action div.item.filter input:focus { width:320px; transition:width 0.5s; }
body.width1 $output>div>div.list>div.title div.action div.item.filter input:focus { width:200px; transition:width 0.5s; }
$output>div>div.list>div.title div.action div.item.filter input { transition:width 0.8s; } $output>div>div.list>div.title div.action div.item.filter input { transition:width 0.8s; }
$output>div>div.list>div.title div.action { overflow:hidden; } $output>div>div.list>div.title div.action { overflow:hidden; }
$output>div>div.list>div.title div.action div.item { margin-right:5px; } $output>div>div.list>div.title div.action div.item { margin-right:5px; }
$output>div>div.list>div.title div.action div.item.button.icons input { display:none; } $output>div>div.list>div.title div.action div.item.button.icons input { display:none; }
$output>div>div.list>div.role:not(.hide) { display:flex; align-items:center; justify-content:space-around; } $output>div>div.list>div.role:not(.hide) { display:flex; align-items:center; justify-content:space-around; }
$output>div>div.list>div.role span { padding:5px; cursor:pointer; white-space:pre; } $output>div>div.list>div.role span { padding:5px; cursor:pointer; white-space:pre; }
body:not(.mobile) $output>div>div.list>div.role span:hover { background-color:var(--hover-bg-color); }
$output>div>div.list>div.role span:not(.select) { color:gray; } $output>div>div.list>div.role span:not(.select) { color:gray; }
$output>div>div.list>div.role span.select { border-bottom:var(--box-notice); } $output>div>div.list>div.role span.select { border-bottom:var(--box-notice); }
$output>div>div.list>div.role span.creator.select { border-bottom:var(--box-danger); } $output>div>div.list>div.role span.creator.select { border-bottom:var(--box-danger); }
@ -67,100 +50,79 @@ $output>div>div.list>div.role span.leader.select { border-bottom:var(--box-dange
$output>div>div.list>div.role span.boss.select { border-bottom:var(--box-danger); } $output>div>div.list>div.role span.boss.select { border-bottom:var(--box-danger); }
$output>div>div.list>div.output>div.item.index:not(.hide) { padding:5px 10px; display:flex; flex-direction:column; align-items:center; float:left; } $output>div>div.list>div.output>div.item.index:not(.hide) { padding:5px 10px; display:flex; flex-direction:column; align-items:center; float:left; }
$output>div>div.list>div.output>div.item.index img { height:36px; width:36px; object-fit:contain; } $output>div>div.list>div.output>div.item.index img { height:36px; width:36px; object-fit:contain; }
$output>div>div.list>div.output>div.item.index i { font-size:22px; padding:5px; }
$output>div>div.list>div.output>div.item.index span { font-size:12px; white-space:pre; max-width:80px; } $output>div>div.list>div.output>div.item.index span { font-size:12px; white-space:pre; max-width:80px; }
$output>div>div.list div.code { text-align:center; } $output>div>div.list div.code { text-align:center; }
$output>div>div.list div.code input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; margin:auto; min-width:200px; display:block; margin-top:10px; } $output>div>div.list div.code input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; margin:auto; min-width:200px; display:block; margin-top:10px; }
$output>div>div.list fieldset.story>div.output { background-color:var(--plugin-bg-color); } // $output>div>div.list fieldset.story>div.output { background-color:var(--output-bg-color); }
$output div.head>img { height:200px; width:100%; object-fit:cover; } $output div.head>img { height:200px; width:100%; object-fit:cover; }
$output div.head div.item.card img { border-radius:25px; } $output div.head div.item.card img { border-radius:25px; }
$output div.head>div.item.card div.title div.item.button i { display:none; } $output div.head>div.item.card div.title div.item.button i { display:none; }
$output div.tabs { height:32px; display:flex; position:unset; } $output div.tabs { height:32px; display:flex; position:unset; }
$output div.tabs span { padding:5px 10px; } $output div.tabs span { padding:5px 10px; }
body:not(.mobile) $output div.tabs span:hover { background-color:var(--hover-bg-color); }
$output div.tabs span.select { background-color:var(--output-bg-color); color:var(--hover-fg-color); } $output div.tabs span.select { background-color:var(--output-bg-color); color:var(--hover-fg-color); }
$output div.item.card:not(:last-child) { margin-bottom:2px; } $output div.item.card:not(:last-child) { margin-bottom:2px; }
body:not(.width1) $output div.item.card { flex-direction:row-reverse; }
body:not(.width1) $output div.item.card>div.action { position:static; flex-shrink:0; }
body:not(.width1) $output div.item.card>div.output { flex-grow:1; }
$output div.item.card>div.output>div { width:100%; width:calc(100% - 53px); overflow:hidden; } $output div.item.card>div.output>div { width:100%; width:calc(100% - 53px); overflow:hidden; }
$output div.item.card div.title { width:100%; display:flex; position:relative; } $output div.item.card div.title { margin-bottom:5px; width:100%; display:flex; align-items:center; position:relative; }
$output div.item.card div.title span.type { line-height:22px; }
$output div.item.card div.title span.status { line-height:22px; }
$output div.item.card div.title span.price { color:var(--danger-bg-color); margin-left:auto; }
$output div.item.card div.title span.auth { font-size:14px; padding:3px; }
$output div.item.card div.title span.time { position:absolute; right:0; font-size:12px; color:gray; }
$output div.item.card div.title span:first-child { word-break:break-all; } $output div.item.card div.title span:first-child { word-break:break-all; }
$output fieldset.story>div.item.card div.title span { line-height:26px; } $output div.item.card div.title span.auth { font-size:14px; }
$output div.item.title { border-left:var(--box-notice3); margin-left:10px; padding:10px; background-color:var(--plugin-bg-color); } $output div.item.card div.title span.time { position:absolute; right:0; font-size:12px; color:gray; }
$output div.item.title.dealList { border-left:var(--box-danger3); }
$output div.item.title.meetList { border-left:var(--box-danger3); }
$body div.inputs>div.input.float>div.action { display:flex; }
$output div.item.card div.title div.action input { margin-right:0; } $output div.item.card div.title div.action input { margin-right:0; }
$output div.item.card div.status span { word-break:break-all; } $output div.item.card div.status span { word-break:break-all; }
$output div.item.card img { border-radius:5px; padding:0; margin:0; margin-right:10px; height:48px; width:48px; min-width:48px; object-fit:cover; } $output div.item.card img { border-radius:5px; padding:0; margin:0; margin-right:10px; height:48px; width:48px; min-width:48px; object-fit:cover; }
$output div.item.card div.container img { margin-right:0; height:100%; width:100%; } $output div.item.card div.container img { margin-right:0; height:100%; width:100%; }
$output div.item.card div.container>div.action { position:relative; float:right; }
body:not(.mobile) $output div.item.card div.container>div.action { display:none; }
body.mobile $output div.item.card div.container>div.title>span.status { margin-left:auto; }
$output div.item.card.sticky>div.output { background-color:var(--plugin-bg-color); color:var(--notice-bg-color); } $output div.item.card.sticky>div.output { background-color:var(--plugin-bg-color); color:var(--notice-bg-color); }
// $action div.item.notice input[type=button] { border:var(--box-notice); color:var(--notice-bg-color); } $action div.item.notice input[type=button] { border:var(--box-notice); color:var(--notice-bg-color); }
$action div.item input[type=button] { min-width:20px; padding:0 5px; } body:not(.mobile) $action div.item.notice input[type=button]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
$action div.item input[type=button] { color:var(--notice-bg-color); }
// $action div.item input[type=button] { border:var(--box-notice); color:var(--notice-bg-color); }
// $action div.item.text input { border:var(--box-notice); color:var(--notice-bg-color); }
// $action div.item.text input { color:var(--notice-bg-color); }
// $action div.item.text i { color:var(--notice-bg-color); }
$action div.item.danger input[type=button] { border:var(--box-danger); color:var(--danger-bg-color); } $action div.item.danger input[type=button] { border:var(--box-danger); color:var(--danger-bg-color); }
$output input.notice[type=button]:hover { border:var(--box-notice); background-color:var(--notice-bg-color); color:var(--notice-fg-color); } $output input.notice[type=button]:not(:hover) { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
$output input.notice[type=button]:not(:hover) { background-color:transparent; color:var(--notice-bg-color); }
$output input.danger[type=button]:not(:hover) { color:var(--danger-bg-color); } $output input.danger[type=button]:not(:hover) { color:var(--danger-bg-color); }
$output input.danger[type=button]:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
$output input[type=button][name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); } $output input[type=button][name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
$output span.type { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; } $output span.type { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:2px 8px; }
$output span.role { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; } $output span.role { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:2px 8px; }
$output span.level { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; } $output span.status { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:2px 8px; }
$output span.status { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; }
$output span.type.danger { color:var(--danger-bg-color); } $output span.type.danger { color:var(--danger-bg-color); }
$output span.role.danger { color:var(--danger-bg-color); } $output span.role.danger { color:var(--danger-bg-color); }
$output span.level.danger { color:var(--danger-bg-color); }
$output span.status.danger { color:var(--danger-bg-color); } $output span.status.danger { color:var(--danger-bg-color); }
$output table.content { background-color:var(--output-bg-color); } $output table.content { background-color:var(--output-bg-color); }
$output table.content td.action input.icons { display:unset; } $output table.content td.action input.icons { display:unset; }
$output table.content td.action i { display:none; } $output table.content td.action i { display:none; }
$output table.content.detail thead { display:none; }
$output table.content.detail td.action input { padding:0 10px; min-width:60px; } $output table.content.detail td.action input { padding:0 10px; min-width:60px; }
// $output table.content.detail td.action input { padding:0 20px; min-width:80px; }
$output table.content.detail tr.action input.icons { display:unset; } $output table.content.detail tr.action input.icons { display:unset; }
$output table.content.detail tr.action i { display:none; } $output table.content.detail tr.action i { display:none; }
$output table.content.detail tr.uid { display:none; } $output table.content.detail tr.uid { display:none; }
$output table.content.detail input { border:none; }
$output>div.output>div.code { padding:10px; }
$output>fieldset.story { margin-top:48px; } $output>fieldset.story { margin-top:48px; }
$output fieldset.story { box-shadow:none; } $output fieldset.story { box-shadow:none; }
$output fieldset.story>legend { display:none; } $output fieldset.story>legend { display:none; }
$output fieldset.story>form.option { display:none; } $output fieldset.story>form.option { display:none; }
$output fieldset.story>div.action { display:none; } $output fieldset.story>div.action { display:none; }
$output fieldset.story>div.status { display:none; } $output fieldset.story>div.status { display:none; }
$output>fieldset.story>div.output { background-color:var(--plugin-bg-color); } $output fieldset.story>div.output { background-color:var(--plugin-bg-color); }
$output fieldset.story>div.output div.code { padding:0; }
$output fieldset.story>div.output table.content td { box-shadow:none; } $output fieldset.story>div.output table.content td { box-shadow:none; }
$output fieldset.story>div.output table.content.detail td:last-child { text-align:left; }
$output fieldset.story>div.output table.content td img { max-width:100%; } $output fieldset.story>div.output table.content td img { max-width:100%; }
$output fieldset.story>div.output table.content tr.icon td img { max-height:128px; max-width:128px; }
$output fieldset.story>div.output table.content tr.user_avatar td img { max-height:128px; max-width:128px; } $output fieldset.story>div.output table.content tr.user_avatar td img { max-height:128px; max-width:128px; }
$output fieldset.story>div.output table.content tr.auth_avatar td img { max-height:128px; max-width:128px; } $output fieldset.story>div.output table.content tr.auth_avatar td img { max-height:128px; max-width:128px; }
$output fieldset.story>div.output>div.code { text-align:center; } $output fieldset.story>div.output>div.code { text-align:center; }
$output fieldset.story>div.output>div.code { display:flex; flex-direction:column; row-gap:10px; margin-top:20px; margin-bottom:20px; } $output fieldset.story>div.output>div.code { display:flex; flex-direction:column; row-gap:10px; }
$output fieldset.story>div.output>div.code>img { display:block; margin:auto; width:100%; max-width:320px; } $output fieldset.story>div.output>div.code>img { display:block; margin:auto; width:100%; max-width:390px; }
// $output fieldset.story>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); margin-right:10px; float:right; }
$output fieldset.story>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); float:right; } $output fieldset.story>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); float:right; }
body:not(.mobile) $output fieldset.story>div.output>div.code>input[type=button]:hover { border:var(--box-notice); background-color:transparent; color:var(--notice-bg-color); }
$output fieldset.story>div.output>div.code>input[type=button].danger { border:var(--box-danger); background-color:transparent; color:var(--danger-bg-color); } $output fieldset.story>div.output>div.code>input[type=button].danger { border:var(--box-danger); background-color:transparent; color:var(--danger-bg-color); }
$output fieldset.story>div.output>div.code div.item.button { margin-top:20px; } $output fieldset.story>div.output>div.code div.item.button { margin-top:20px; }
$output fieldset.story>div.output>div.code div.item.button input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; min-width:240px; height:36px; } $output fieldset.story>div.output>div.code div.item.button input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; min-width:240px; height:36px; }
$output fieldset.story>div.output>div.code div.item.button input[type=button][name=cancel] { border:var(--box-border); background-color:var(--danger-bg-color); color:var(--danger-fg-color); } $output fieldset.story>div.output>div.code div.item.button input[type=button][name=cancel] { border:var(--box-border); background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
$output fieldset.story>div.output>div.code div.item.button.danger input[type=button] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } $output fieldset.story>div.output>div.code div.item.button.danger input[type=button] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
$output>fieldset.story>div.output div.item.card>div.output { padding:10px; width:100%; } $output>fieldset.story>div.output div.item.card>div.output { padding:10px; width:100%; }
$output>fieldset.story>div.output div.item.card.loaded>div.output { background-color:var(--plugin-bg-color); }
$output>fieldset.story>div.output div.item.card>div.output div.output { padding:5px 0; white-space:pre-line; } $output>fieldset.story>div.output div.item.card>div.output div.output { padding:5px 0; white-space:pre-line; }
$output fieldset.story.form>div.output>div.code>input[type=button] { font-size:18px; margin:10px; height:36px; } $output fieldset.story.form>div.output>div.code>input[type=button] { font-size:18px; margin:10px; height:36px; }
// $output>fieldset.story.web.team.renzhengshouquan.profile { margin-top:0; } $output>fieldset.story.web.team.renzhengshouquan.profile { margin-top:0; }
// $output>fieldset.story.web.team.credit { margin-top:0; } $output>fieldset.story.web.team.credit { margin-top:0; }
$output>fieldset.story.web.team.credit>div.output>div.code { margin-top:64px; } $output>fieldset.story.web.team.credit>div.output>div.code { margin-top:32px; }
$output>fieldset.message div.tabs span.select { border-top:var(--box-border); } $output>fieldset.message div.tabs span.select { border-top:var(--box-border); }
$output>fieldset.message div.tabs span.create.select { border-top:var(--box-danger); } $output>fieldset.message div.tabs span.create.select { border-top:var(--box-danger); }
$output>fieldset.message div.tabs span.read.select { border-top:var(--box-notice); } $output>fieldset.message div.tabs span.read.select { border-top:var(--box-notice); }
@ -169,32 +131,27 @@ $output>fieldset.market>div.output>div.tabs { display:flex; width:100%; overflow
$output>fieldset.market>div.output>div.tabs>div.item { padding:5px 10px; float:left; white-space:pre; } $output>fieldset.market>div.output>div.tabs>div.item { padding:5px 10px; float:left; white-space:pre; }
$output>fieldset.market>div.output>div.tabs>div.item.select { border-top:var(--box-danger); background-color:var(--output-bg-color); color:var(--danger-bg-color); font-weight:bold; position:sticky; left:0; right:0; } $output>fieldset.market>div.output>div.tabs>div.item.select { border-top:var(--box-danger); background-color:var(--output-bg-color); color:var(--danger-bg-color); font-weight:bold; position:sticky; left:0; right:0; }
$output>fieldset.market>div.output>div.list div.item.card img { border-radius:50%; height:40px; width:40px; min-width:40px; } $output>fieldset.market>div.output>div.list div.item.card img { border-radius:50%; height:40px; width:40px; min-width:40px; }
$output>fieldset.market>div.output>div.list div.item.card div.status { font-size:12px; } $output>fieldset.market>div.output>div.list div.item.card div.status { font-size:14px; }
$output>fieldset.market>div.output>div.list div.item.card div.status>span.username { color:var(--body-fg-color); font-size:14px; } $output>fieldset.market>div.output>div.list div.item.card div.status>span.username { color:var(--body-fg-color); font-size:14px; }
$output>fieldset.market>div.output>div.list div.item.card div.status>span.time { float:right; } $output>fieldset.market>div.output>div.list div.item.card div.status>span.time { float:right; }
$output>fieldset.market>div.output>div.list div.item.card div.output div.action { color:gray; font-size:14px; width:100%; max-width:100%; display:flex; justify-content:space-around; position:relative; } $output>fieldset.market>div.output>div.list div.item.card div.output div.action { color:gray; font-size:14px; width:100%; max-width:100%; display:flex; justify-content:space-around; position:relative; }
$output>fieldset.market>div.output>div.list div.item.card div.output div.action i { margin-right:5px; } $output>fieldset.market>div.output>div.list div.item.card div.output div.action i { margin-right:5px; }
// $output>fieldset.market>div.output>div.list div.item.card div.output div.output { padding:10px 0; }
$output>fieldset.market>div.output>div.list div.item.card div.output div.action div.item.done { color:var(--notice-bg-color); } $output>fieldset.market>div.output>div.list div.item.card div.output div.action div.item.done { color:var(--notice-bg-color); }
$output.background>div.output { padding-top:80px; } $output.background>div.output { padding-top:120px; }
$output.public>div>div.list:not(.mylist)>div.title { display:none; } $output.public>div>div.list:not(.mylist)>div.title { display:none; }
$output.public>div>div.list.myplace>div.output { padding:0; } $output.public>div>div.list.myplace>div.output { padding:0; }
$output.public>div>div.list.myplace div.item.card div.output { padding:0; } $output.public>div>div.list.myplace div.item.card div.output { padding:0; }
body.dark $output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:yellow; white-space:pre; }
body.width1 fieldset.panel.Action>div.output { background-color:var(--plugin-bg-color); }
body.width1 div.input.float { margin:0; width:100% !important; max-width:100% !important; }
body.width1 div.input.float input[name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
body.width1 $output>div>div.list>div.title div.action div.item.filter input:focus { width:200px; transition:width 0.5s; }
body.width6 $output>div.output>div.code img.avatar { top:183px; }
body:not(.width1) $output div.item.card { flex-direction:row-reverse; }
body:not(.width1) $output div.item.card>div.action { position:static; flex-shrink:0; }
body:not(.width1) $output div.item.card>div.output { flex-grow:1; }
body:not(.width1) $output div.item.card div.title div.action { display:none; }
body:not(.mobile) $output>fieldset.story>div.output div.item.card:not(:hover) { background-color:var(--output-bg-color); }
body:not(.mobile) $output div.tabs span:hover { background-color:var(--hover-bg-color); }
body:not(.mobile) $output>div>div.list>div.role span:hover { background-color:var(--hover-bg-color); }
body:not(.mobile) $output fieldset.story>div.output>div.code>input[type=button]:hover { border:var(--box-notice); background-color:transparent; color:var(--notice-bg-color); }
body:not(.mobile) $action div.item.notice input[type=button]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
body.en $output>fieldset table.content td:first-child { max-width:190px; min-width:100px; width:unset;}
body.en $output>fieldset table.content td { padding: 10px 5px; }
fieldset.web.team.storage.file div.item.card div.title span:first-child { flex-grow:1; } fieldset.web.team.storage.file div.item.card div.title span:first-child { flex-grow:1; }
fieldset.web.team.renzhengshouquan.profile>div.output div.code { margin-top:60px; margin-bottom:240px; }
body.dark $output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:yellow; white-space:pre; }
body.width1 $output img.qrcode { width:100%; margin:0; }
body.width1 div.input.float { margin:0; width:100% !important; max-width:100% !important; }
// body.width1 div.input.float { position:absolute; top:0 !important; }
body.width1 div.input.float input[name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
body.width1 fieldset.panel.Action>div.output { background-color:var(--plugin-bg-color); }
body:not(.mobile) $output>fieldset.story>div.output div.item.card:not(:hover) { background-color:var(--output-bg-color); }
body:not(.width1) $output div.item.card div.title div.action { display:none; }
body.en $output>fieldset table.content td:first-child { max-width:180px; width:unset;}
$fieldset { box-shadow:none; } $fieldset { box-shadow:none; }
$output>div.output>div.code { padding:10px; }

View File

@ -30,7 +30,7 @@ type Portal struct {
field string `data:"time,icons,name,index,order,enable,type,auth,role,view,init,portal"` field string `data:"time,icons,name,index,order,enable,type,auth,role,view,init,portal"`
create string `name:"create index name icons"` create string `name:"create index name icons"`
list string `name:"list place_uid index uid auto" role:"void"` list string `name:"list place_uid index uid auto" role:"void"`
placeCreate string `name:"placeCreate city_name* street_name* place_name* place_type:select address" icon:"bi bi-plus-circle" role:"void"` placeCreate string `name:"placeCreate city_name* street_name* place_name* place_type:select address" icon:"bi bi-plus-square-dotted" role:"void"`
placeRemove string `name:"placeRemove" role:"void"` placeRemove string `name:"placeRemove" role:"void"`
} }
@ -77,11 +77,6 @@ func (s Portal) Command(m *ice.Message, arg ...string) {
} }
} }
func (s Portal) Run(m *ice.Message, arg ...string) { func (s Portal) Run(m *ice.Message, arg ...string) {
if m.Option(model.MESSAGE_UID) != "" {
msg := m.Cmd(message{}, s.Table.Select, model.UID, m.Option(model.MESSAGE_UID))
m.Option(s.Keys(s.Place, model.UID), msg.Append(model.PLACE_UID))
m.Option(model.PLACE_UID, msg.Append(model.PLACE_UID))
}
if cmdPortal[arg[0]] != "" && cmdPortal[arg[0]] != m.PrefixKey() { if cmdPortal[arg[0]] != "" && cmdPortal[arg[0]] != m.PrefixKey() {
s.AutoCmdy(m, cmdPortal[arg[0]], ctx.ACTION, m.ActionKey(), arg) s.AutoCmdy(m, cmdPortal[arg[0]], ctx.ACTION, m.ActionKey(), arg)
return return
@ -101,10 +96,7 @@ func (s Portal) Run(m *ice.Message, arg ...string) {
role = action.Role role = action.Role
} else { } else {
m.Option(s.Keys(s.Place, model.UID), arg[1]) m.Option(s.Keys(s.Place, model.UID), arg[1])
defer s.SelectJoinUser(m)
} }
} else {
defer s.SelectJoinUser(m)
} }
if action, ok := cmd.Actions["beforeAction"]; ok { if action, ok := cmd.Actions["beforeAction"]; ok {
action.Hand(m.Message, arg[1:]...) action.Hand(m.Message, arg[1:]...)
@ -124,9 +116,6 @@ func (s Portal) Run(m *ice.Message, arg ...string) {
m.Cmdy(arg) m.Cmdy(arg)
} }
} }
if len(arg) > 0 && strings.HasSuffix(arg[0], ".portal") {
return
}
if kit.IndexOf(arg, mdb.INPUTS) == -1 { if kit.IndexOf(arg, mdb.INPUTS) == -1 {
s.Place.RewriteAppend(m) s.Place.RewriteAppend(m)
} }
@ -137,7 +126,7 @@ func (s Portal) List(m *ice.Message, arg ...string) {
s.Hash.List(m, kit.Slice(arg, 1)...).PushAction(mdb.DETAIL, s.Hash.Remove).Action().SortInt(mdb.ORDER) s.Hash.List(m, kit.Slice(arg, 1)...).PushAction(mdb.DETAIL, s.Hash.Remove).Action().SortInt(mdb.ORDER)
return return
} }
if m.Option(model.USER_UID) == "" { if m.Option(model.USER_UID) == "" || m.Cmd(s.user, s.Table.Select, model.UID, m.Option(model.USER_UID)).Length() == 0 {
if msg := m.Cmd(s.user, s.Table.Select, model.OPEN_ID, m.Option(ice.MSG_USERNAME)); msg.Length() == 0 { if msg := m.Cmd(s.user, s.Table.Select, model.OPEN_ID, m.Option(ice.MSG_USERNAME)); msg.Length() == 0 {
msg := m.Cmd(s.user, s.Table.Create, m.Option(ice.MSG_USERNAME), "", m.OptionDefault(ice.MSG_USERNICK, m.Option(ice.MSG_USERNAME))) msg := m.Cmd(s.user, s.Table.Create, m.Option(ice.MSG_USERNAME), "", m.OptionDefault(ice.MSG_USERNICK, m.Option(ice.MSG_USERNAME)))
m.ProcessCookie(model.USER_UID, msg.Result()) m.ProcessCookie(model.USER_UID, msg.Result())
@ -146,9 +135,6 @@ func (s Portal) List(m *ice.Message, arg ...string) {
} }
return return
} }
if m.Cmd(s.user, s.Table.Select, model.UID, m.Option(model.USER_UID)).Length() == 0 {
m.Cmd(s.user, s.Table.Insert, model.UID, m.Option(model.USER_UID), model.OPEN_ID, m.Option(ice.MSG_USERNAME), model.NAME, m.OptionDefault(ice.MSG_USERNICK, m.Option(ice.MSG_USERNAME)))
}
m.Option(model.SERVICE_UID, ServiceUID(m)) m.Option(model.SERVICE_UID, ServiceUID(m))
if len(arg) == 0 { if len(arg) == 0 {
m.Cmdy(m.PrefixKey(), s.PlaceList, m.Option(model.USER_UID)).PushAction(s.PlaceRemove).Action(s.PlaceCreate) m.Cmdy(m.PrefixKey(), s.PlaceList, m.Option(model.USER_UID)).PushAction(s.PlaceRemove).Action(s.PlaceCreate)
@ -160,18 +146,8 @@ func (s Portal) List(m *ice.Message, arg ...string) {
defer m.EchoQRCode(m.Cmdx("", s.Link, arg[0])) defer m.EchoQRCode(m.Cmdx("", s.Link, arg[0]))
} }
s.Hash.List(m).SortInt(mdb.ORDER) s.Hash.List(m).SortInt(mdb.ORDER)
m.RewriteAppend(func(value, key string, index int) string {
if key == "icons" {
value = m.Resource(value)
}
return value
})
} }
s.Place.RewriteAppend(m) s.Place.RewriteAppend(m)
if true {
p := kit.ExtChange(m.Resource(ctx.GetCmdFile(m.Message, m.PrefixKey())), "js")
defer func() { m.Option(ice.MSG_DISPLAY, p+","+m.Option(ice.MSG_DISPLAY)) }()
}
s.DisplayBase(m, "").DisplayCSS("") s.DisplayBase(m, "").DisplayCSS("")
} }
func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message { func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message {
@ -182,11 +158,7 @@ func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message {
return msg return msg
} }
msg.Push(s.Keys(s.UserPlace, model.ROLE), "0") msg.Push(s.Keys(s.UserPlace, model.ROLE), "0")
msg.RenameAppend(model.NAME, s.Keys(s.Place, model.NAME), msg.RenameAppend(model.NAME, s.Keys(s.Place, model.NAME), model.TYPE, s.Keys(s.Place, model.TYPE))
model.INFO, s.Keys(s.Place, model.INFO),
model.AVATAR, s.Keys(s.Place, model.AVATAR),
model.TYPE, s.Keys(s.Place, model.TYPE),
)
s.SelectJoin(msg, s.Street, model.NAME, model.CITY_UID) s.SelectJoin(msg, s.Street, model.NAME, model.CITY_UID)
s.SelectJoinCity(msg) s.SelectJoinCity(msg)
s.SelectJoinAuth(msg) s.SelectJoinAuth(msg)
@ -195,8 +167,10 @@ func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message {
msg.Append(model.DASHBOARD_UID, "") msg.Append(model.DASHBOARD_UID, "")
} }
s.Place.RewriteAppend(msg) s.Place.RewriteAppend(msg)
m.Options(msg.AppendSimple(model.CITY_NAME, s.Keys(s.Street, model.NAME), m.Options(msg.AppendSimple(
s.Keys(s.Place, model.NAME), s.Keys(s.Place, model.TYPE), s.Keys(s.UserPlace, model.ROLE), model.MEMBER_STATUS, s.Keys(s.Place, model.NAME), s.Keys(s.Place, model.TYPE), s.Keys(s.UserPlace, model.ROLE),
model.CITY_NAME, s.Keys(s.Street, model.NAME),
model.MEMBER_STATUS,
model.AUTH_STATUS, model.AUTH_NAME, model.AUTH_INFO, model.AUTH_AVATAR, model.AUTH_BACKGROUND, model.DASHBOARD_UID, model.AUTH_STATUS, model.AUTH_NAME, model.AUTH_INFO, model.AUTH_AVATAR, model.AUTH_BACKGROUND, model.DASHBOARD_UID,
)) ))
m.Option(model.STREET_NAME, msg.Append(s.Keys(s.Street, model.NAME))) m.Option(model.STREET_NAME, msg.Append(s.Keys(s.Street, model.NAME)))
@ -366,11 +340,6 @@ func (s Portal) RecordEvent(m *ice.Message, arg ...string) {
s.event.Record(m.Spawn(kit.Dict(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))), arg[0], arg[1:]...) s.event.Record(m.Spawn(kit.Dict(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))), arg[0], arg[1:]...)
} }
func (s Portal) MarketInsert(m *ice.Message, arg ...string) { func (s Portal) MarketInsert(m *ice.Message, arg ...string) {
// m.Option(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))
m.Option(ctx.ARGS, kit.Join([]string{m.Option(model.PLACE_UID), m.Option(model.UID)}))
m.Cmdy(s.Prefix(m, market{}), s.Create, arg)
}
func (s Portal) PushPublic(m *ice.Message, arg ...string) {
m.Option(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID))) m.Option(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))
m.Option(ctx.ARGS, kit.Join([]string{m.Option(model.PLACE_UID), m.Option(model.UID)})) m.Option(ctx.ARGS, kit.Join([]string{m.Option(model.PLACE_UID), m.Option(model.UID)}))
m.Cmdy(s.Prefix(m, market{}), s.Create, arg) m.Cmdy(s.Prefix(m, market{}), s.Create, arg)
@ -456,12 +425,8 @@ func (s Portal) Link(m *ice.Message, arg ...string) *ice.Message {
if len(arg) == 0 { if len(arg) == 0 {
return m.Echo(m.MergePodCmd("", s.Prefix(m, s))) return m.Echo(m.MergePodCmd("", s.Prefix(m, s)))
} }
p := m.MergePodCmd("", s.Prefix(m, s), s.Keys(s.Place, model.UID), arg[0]) return m.Echo(m.MergePodCmd("", s.Prefix(m, s), s.Keys(s.Place, model.UID), arg[0]) +
if len(arg) == 1 { "#" + kit.TrimSuffix(kit.Join([]string{arg[0], kit.Select("", arg, 1), kit.Select("", arg, 2)}, ":"), ":", ":"))
return m.Echo(p)
}
h := kit.TrimSuffix(kit.Join([]string{arg[0], kit.Select("", arg, 1), kit.Select("", arg, 2)}, ":"), ":", ":")
return m.Echo(p + "#" + h)
} }
func init() { ice.TeamCtxCmd(Portal{Table: newTable()}) } func init() { ice.TeamCtxCmd(Portal{Table: newTable()}) }

View File

@ -1,35 +1,12 @@
var UID = "uid", PLACE_UID = "place_uid", PLACE_NAME = "place_name", PLACE_TYPE = "place_type", STREET_NAME = "street_name", CITY_NAME = "city_name" var UID = "uid", PLACE_UID = "place_uid", PLACE_NAME = "place_name", PLACE_TYPE = "place_type", STREET_NAME = "street_name", CITY_NAME = "city_name"
var USER_UID = "user_uid", USER_ROLE = "user_role", AUTH_UID = "auth_uid", AUTH_TYPE = "auth_type" var USER_UID = "user_uid", USER_ROLE = "user_role", AUTH_UID = "auth_uid", AUTH_TYPE = "auth_type"
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { _init: function(can, msg) { can.onappend.style(can, html.OUTPUT), can.onimport.myPortal(can, msg) },
can.onappend.style(can, html.OUTPUT), can.onimport.myPortal(can, msg)
},
otherList: function(can, msg, action) { if (!msg.IsDetail()) { return } typeof action == "string" && (action = [action])
can.core.Next(action, function(action, next) {
can.run(can.request({}, {uid: msg.Append(UID)}), action, function(msg) { if (msg.Length() == 0) { return next() }
can.page.Append(can, can._output, [{view: [[html.ITEM, html.TITLE, action], "", can.user.trans(can, action)]}])
can.onappend.plugin(can, {index: can.ConfIndex()}, function(sub) { can.onimport.myField(can, sub)
sub.run = function(event, cmds, cb) {
if (!cmds || cmds.length == 0) { cb(msg) } else { can.run(event, cmds, cb) }
}, next()
sub.onexport.output = function(_sub, msg) {
_sub.onaction.carddetail = function(event, _sub, value) {
can.onimport.myStory(can, {index: msg.Option("_command"), args: [msg.Option("place_uid"), value.uid]})
return true
}
}
})
})
})
},
qrcode: function(can, msg, avatar, target) { target = target||can.ui.output, can.onappend.board(can, msg, target)
can.page.Append(can, can.page.SelectOne(can, target, "div.code"), [{img: can.misc.Resource(can, avatar||can.ConfIcons()||can.user.info.favicon), className: "avatar"}])
},
myValue: function(can, value) { return [ myValue: function(can, value) { return [
{view: html.TITLE, list: [value.auth_name||value._name, can.onimport.authView(can, value), {view: html.TITLE, list: [value.auth_name||value._name, can.onimport.authView(can, value),
{text: [value.__type, "", [mdb.TYPE, value._type, value._type_style]]}, value._role != "visitor" && {text: [value.__role, "", [aaa.ROLE, value._role, value._role_style]]}, {text: [value.__type, "", [mdb.TYPE, value._type, value._type_style]]}, value._role != "visitor" && {text: [value.__role, "", [aaa.ROLE, value._role, value._role_style]]},
]}, ]},
can.ConfIndex() != "web.team.renzhengshouquan.portal" && {view: html.STATUS, list: [value.city_name, value._street, can.ConfHelp(), can.user.info.titles]}, {view: html.STATUS, list: [value.city_name, value._street, can.ConfHelp(), can.user.info.titles]},
{view: html.STATUS, list: [value.auth_info||value._info]}, {view: html.STATUS, list: [value.auth_info||value._info]},
] }, ] },
myTrans: function(can, value) { myTrans: function(can, value) {
@ -44,6 +21,9 @@ Volcanos(chat.ONIMPORT, {
myTitle: function(can, name, help, target) { myTitle: function(can, name, help, target) {
can.page.Appends(can, target||can.ui.list, [{view: html.TITLE, list: [{text: can.user.trans(can, name, help)}]}]) can.page.Appends(can, target||can.ui.list, [{view: html.TITLE, list: [{text: can.user.trans(can, name, help)}]}])
}, },
qrcode: function(can, msg, avatar, target) { target = target||can.ui.output, can.onappend.board(can, msg, target)
can.page.Append(can, can.page.SelectOne(can, target, "div.code"), [{img: can.misc.Resource(can, avatar||can.ConfIcons()||can.user.info.favicon), className: "avatar"}])
},
myPortal: function(can, msg) { can.sup.current = {} myPortal: function(can, msg) { can.sup.current = {}
can.page.tagis(document.body, "body.width1") && (can.user.isMobile = true, can.sup.user.isMobile = true) can.page.tagis(document.body, "body.width1") && (can.user.isMobile = true, can.sup.user.isMobile = true)
can.onmotion.delay(can, function() { can.onmotion.delay(can, function() {
@ -54,13 +34,11 @@ Volcanos(chat.ONIMPORT, {
var USER_PLACE_ROLE = can.Conf("_user_place_role"), STREET_NAME = can.Conf("_street_name") var USER_PLACE_ROLE = can.Conf("_user_place_role"), STREET_NAME = can.Conf("_street_name")
can.user.isMobile && (can.db.hash = []) can.user.isMobile && (can.db.hash = [])
can.isCmdMode() && (can.db.hash = can.base.Obj(can.misc.SearchHash(can), can.db.hash)), can.db.hash[0] && can.onexport.place(can, can.db.hash[0]) can.isCmdMode() && (can.db.hash = can.base.Obj(can.misc.SearchHash(can), can.db.hash)), can.db.hash[0] && can.onexport.place(can, can.db.hash[0])
if (can.sup._goback) { can.db.hash = can.db.hash.slice(0, 1) }
if (can.db.hash.length > 1 && can.db.hash[1]) { if (can.db.hash.length > 1 && can.db.hash[1]) {
can.sup.current = can.onimport.myTrans(can, kit.Dict(msg.OptionSimple(PLACE_UID, PLACE_NAME, PLACE_TYPE, USER_PLACE_ROLE, STREET_NAME, CITY_NAME))) can.sup.current = can.onimport.myTrans(can, kit.Dict(msg.OptionSimple(PLACE_UID, PLACE_NAME, PLACE_TYPE, USER_PLACE_ROLE, STREET_NAME, CITY_NAME)))
return can.runAction({}, ctx.COMMAND, [can.db.hash[1]], function(msg) { msg.Table(function(value) { return can.runAction({}, ctx.COMMAND, [can.db.hash[1]], function(msg) { msg.Table(function(value) {
value.args = [can.db.hash[0]].concat(can.db.hash.slice(2)), can.onimport.myStory(can, value) value.args = [can.db.hash[0]].concat(can.db.hash.slice(2)), can.onimport.myStory(can, value)
}) }) }) })
} else {
} }
can.ui = can.page.Append(can, can._output, [{view: html.HEADER}, can.ui = can.page.Append(can, can._output, [{view: html.HEADER},
{view: html.OUTPUT, list: ["myplace.list", "myinit.list", "mycount.list", "mynotice.list", "myindex.list", "myallow.list", "mylist.list"]}, {view: html.OUTPUT, list: ["myplace.list", "myinit.list", "mycount.list", "mynotice.list", "myindex.list", "myallow.list", "mylist.list"]},
@ -79,9 +57,7 @@ Volcanos(chat.ONIMPORT, {
can.onimport.myOrder(can, msg, can.ui.myorder) can.onimport.myOrder(can, msg, can.ui.myorder)
} }
if (can.Option(PLACE_UID) == "") { var uid = can.onimport.myPlace(can, msg, can.ui.myplace) if (can.Option(PLACE_UID) == "") { var uid = can.onimport.myPlace(can, msg, can.ui.myplace)
if (msg.Length() > 0) { msg.Echo(can.ConfHelp()+" "+can.user.info.titles) if (msg.Length() > 0) { msg.Echo(can.ConfHelp()+" "+can.user.info.titles), can.onimport.qrcode(can, msg) }
can.misc.isDebug(can) && can.onimport.qrcode(can, msg)
}
msg.Length() > 0? can.run({}, [uid], function(msg) { showIndex(can._index_msg = msg) }): can.run({}, [uid], function(msg) { can.onimport.myOrder(can, can._index_msg = msg, can.ui.myorder) }) msg.Length() > 0? can.run({}, [uid], function(msg) { showIndex(can._index_msg = msg) }): can.run({}, [uid], function(msg) { can.onimport.myOrder(can, can._index_msg = msg, can.ui.myorder) })
} else { can.onappend.style(can, "public", can._output) } else { can.onappend.style(can, "public", can._output)
var _msg = can.request({}); if (msg.Option(PLACE_NAME)) { _msg.Push(kit.Dict(UID, "", msg.OptionSimple( var _msg = can.request({}); if (msg.Option(PLACE_NAME)) { _msg.Push(kit.Dict(UID, "", msg.OptionSimple(
@ -91,8 +67,7 @@ Volcanos(chat.ONIMPORT, {
if (_msg.Length() == 0) { can.onimport.myOrder(can, msg, can.ui.myorder) } else { showIndex(can._index_msg = msg) } if (_msg.Length() == 0) { can.onimport.myOrder(can, msg, can.ui.myorder) } else { showIndex(can._index_msg = msg) }
can.user.agent.init(can, [msg.Option(CITY_NAME), msg.Option(STREET_NAME), msg.Option("auth_info")].join(" "), msg.Option("auth_avatar")) can.user.agent.init(can, [msg.Option(CITY_NAME), msg.Option(STREET_NAME), msg.Option("auth_info")].join(" "), msg.Option("auth_avatar"))
msg.Echo([msg.Option(CITY_NAME), msg.Option(STREET_NAME), msg.Option(PLACE_NAME)].join(" ")) msg.Echo([msg.Option(CITY_NAME), msg.Option(STREET_NAME), msg.Option(PLACE_NAME)].join(" "))
can.onexport.value(can, can.sup.current) can.onexport.value(can, can.sup.current), can.onimport.qrcode(can, msg, can.sup.current.auth_avatar)
can.misc.isDebug(can) && can.onimport.qrcode(can, msg, can.sup.current.auth_avatar)
} }
}, },
myPlace: function(can, msg, target) { var place_uid myPlace: function(can, msg, target) { var place_uid
@ -137,18 +112,17 @@ Volcanos(chat.ONIMPORT, {
can.runAction({}, "noticeList", [value._uid], function(msg) { can.runAction({}, "noticeList", [value._uid], function(msg) {
if (msg.Length() == 0) { value._notice_hide = true; return can.onmotion.hidden(can, target) } can.onmotion.toggle(can, target, true) if (msg.Length() == 0) { value._notice_hide = true; return can.onmotion.hidden(can, target) } can.onmotion.toggle(can, target, true)
can.page.Append(can, target, [ can.page.Append(can, target, [
{text: can.user.trans(can, "[ notice ]", " [ 公告 ] ")}, {text: can.base.TimeTrim(msg.Append("created_at"))}, {text: " "}, {text: " [ 公告 ] "}, {text: can.base.TimeTrim(msg.Append("created_at"))}, {text: " "}, {text: [msg.Append("title"), "", "title"]}, {text: "更多 >"},
{text: [msg.Append("title"), "", "title"]}, {text: can.user.trans(can, "more >", "更多 >")},
]) ])
}) })
}, },
myList: function(can, msg, target) { var width = (can.ConfWidth()-40)/parseInt((can.ConfWidth()-40)/60); myList: function(can, msg, target) { var width = (can.ConfWidth()-40)/parseInt((can.ConfWidth()-40)/80);
(can.page.tagis(document.body, "body.width1") || can.user.isMobile && !can.user.isLandscape()) && (width = (can.ConfWidth()-40)/5) (can.page.tagis(document.body, "body.width1") || can.user.isMobile && !can.user.isLandscape()) && (width = (can.ConfWidth()-40)/5)
can.page.Append(can, target, msg.Table(function(value) { if (value.enable == ice.FALSE) { return } can.page.Append(can, target, msg.Table(function(value) { if (value.enable == ice.FALSE) { return }
if ((value.portal || value.public) && can.page.tagis(can._output, "div.output.public")) { if ((value.portal || value.public) && can.page.tagis(can._output, "div.output.public")) {
can.onimport.myTitle(can, value.index, value.name, can.ui.mylist), can.onmotion.toggle(can, can.ui.mylist, true) can.onimport.myTitle(can, value.index, value.name, can.ui.mylist)
can.onappend.plugin(can, {index: value.index, args: [can.sup.current._uid], width: can.ConfWidth()-40}, function(sub) { can.onmotion.toggle(can, can.ui.mylist, true)
sub.onimport._field = function(msg) { msg.Table(function(value) { can.onimport.myStory(can, value) }) } can.onappend.plugin(can, {index: value.index, args: [can.sup.current._uid]}, function(sub) {
sub.onexport.output = function(_sub, msg) { sub.onexport.output = function(_sub, msg) {
_sub.onaction.carddetail = function(event, _sub, value) { _sub.onaction.carddetail = function(event, _sub, value) {
can.onimport.myStory(can, {index: sub.ConfIndex(), args: [can.sup.current._uid, value.uid]}) can.onimport.myStory(can, {index: sub.ConfIndex(), args: [can.sup.current._uid, value.uid]})
@ -157,23 +131,11 @@ Volcanos(chat.ONIMPORT, {
} }
}, can.ui.mylist) }, can.ui.mylist)
} }
var cmd = value.index.split(".").pop()
return {view: [[html.ITEM, ctx.INDEX].concat( return {view: [[html.ITEM, ctx.INDEX].concat(
value.type? [mdb.TYPE]: [], can.core.Split(value.type||""), value.role? [aaa.ROLE]: [], can.core.Split(value.role||""), value.type? [mdb.TYPE]: [], can.core.Split(value.type||""), value.role? [aaa.ROLE]: [], can.core.Split(value.role||""),
value.auth, value.view, value.auth, value.view,
)], style: {width: width}, list: [ )], style: {width: width}, list: [
cmd == "market"? {icon: "bi bi-ubuntu"}: {img: can.misc.ResourceIcons(can, value.icons)}, {text: can.user.trans(can, value.index.split(".").pop(), value.name)},
cmd == "message"? {icon: "bi bi-card-checklist"}:
cmd == "recent"? {icon: "bi bi-clock-history"}:
cmd == "service"? {icon: "bi bi-box"}:
cmd == "support"? {icon: "bi bi-opencollective"}:
cmd == "qrcode"? {icon: "bi bi-qr-code"}:
cmd == "apply"? {icon: "bi bi-pencil-square"}:
cmd == "allow"? {icon: "bi bi-clipboard-check"}:
cmd == "event"? {icon: "bi bi-calendar4-week"}:
cmd == "notice"? {icon: "bi bi-megaphone"}:
{img: can.misc.ResourceIcons(can, value.icons)},
{text: can.user.trans(can, value.index.split(".").pop(), value.name)},
], onclick: function(event) { ], onclick: function(event) {
can.onimport.myStory(can, {space: can.ConfSpace(), index: value.index, args: [can.onexport.place(can)||can.misc.Search(can, can.Conf("_place_uid"))]}) can.onimport.myStory(can, {space: can.ConfSpace(), index: value.index, args: [can.onexport.place(can)||can.misc.Search(can, can.Conf("_place_uid"))]})
}} }}
@ -183,7 +145,8 @@ Volcanos(chat.ONIMPORT, {
var _msg = can.request(); msg.Table(function(value) { if (min < value.order && value.order < max) { _msg.Push(value) } }) var _msg = can.request(); msg.Table(function(value) { if (min < value.order && value.order < max) { _msg.Push(value) } })
var output = can.page.Append(can, target, [html.OUTPUT])._target; can.onimport.myList(can, _msg, output) var output = can.page.Append(can, target, [html.OUTPUT])._target; can.onimport.myList(can, _msg, output)
}, },
myIndex: function(can, msg, target) { can.onimport.myTitle(can, "My Index", "我的应用", target) myIndex: function(can, msg, target) {
can.onimport.myTitle(can, "My Index", "我的应用", target)
var list = ["visitor", "creator", "landlord", "teacher", "leader", "boss", "tenant", "student", "worker", "custom", "admin", "parent", "server"] var list = ["visitor", "creator", "landlord", "teacher", "leader", "boss", "tenant", "student", "worker", "custom", "admin", "parent", "server"]
var _list = can.Conf("_trans.value."+can.Conf("_user_place_role")) var _list = can.Conf("_trans.value."+can.Conf("_user_place_role"))
can.core.Item(_list, function(key) { list.indexOf(key) == -1 && list.push(key) }) can.core.Item(_list, function(key) { list.indexOf(key) == -1 && list.push(key) })
@ -206,19 +169,21 @@ Volcanos(chat.ONIMPORT, {
layout: function(can) { layout: function(can) {
can.ui.tabs && can.ui.list && can.page.styleHeight(can, can.ui.list, can.ConfHeight()-can.ui.tabs.offsetHeight) can.ui.tabs && can.ui.list && can.page.styleHeight(can, can.ui.list, can.ConfHeight()-can.ui.tabs.offsetHeight)
if (can.ui.action && can.ui.output) { if (can.ui.action && can.ui.output) {
// can.page.style(can, can.ui.output, html.HEIGHT, (can.user.isMobile? window.innerHeight: can.ConfHeight()) - can.ui.action.offsetHeight) can.page.style(can, can.ui.output, html.HEIGHT, (can.user.isMobile? window.innerHeight: can.ConfHeight()) - can.ui.action.offsetHeight)
can.page.style(can, can.ui.output, html.HEIGHT, (can.ConfHeight()) - can.ui.action.offsetHeight)
} }
}, },
}) })
Volcanos(chat.ONACTION, { Volcanos(chat.ONACTION, {
beforeInputs: function(event, can, button, sub) { beforeInputs: function(event, can, button, sub) {
// can.user.isMobile && can._fields.appendChild(sub._target)
// can.user.isMobile && can.onmotion.hidden(can, can._output)
can.user.isMobile && can.page.style(can, sub._target, html.LEFT, (can.page.width()-sub._target.offsetWidth)/2, html.TOP, 0) can.user.isMobile && can.page.style(can, sub._target, html.LEFT, (can.page.width()-sub._target.offsetWidth)/2, html.TOP, 0)
can.user.isMobile && can.page.style(can, sub._target, html.MAX_HEIGHT, can.page.height()) can.user.isMobile && can.page.style(can, sub._target, html.MAX_HEIGHT, can.page.height())
can.user.isMobile && can._root.Inputs && can._root.Inputs.appendChild(sub._target) can.user.isMobile && can._root.Inputs && can._root.Inputs.appendChild(sub._target)
can.user.isMobile && can.page.style(can, can._root.Action._output, html.VISIBILITY, html.HIDDEN) can.user.isMobile && can.page.style(can, can._root.Action._output, html.VISIBILITY, html.HIDDEN)
sub.Option("city_name", "深圳市") sub.Option("city_name", "深圳市")
if (!can.misc.isDebug(can)) { return }
sub.Option("street_name", "粤海街道") sub.Option("street_name", "粤海街道")
sub.Option("school_name", "深圳中学") sub.Option("school_name", "深圳中学")
sub.Option("company_name", "云轩领航") sub.Option("company_name", "云轩领航")
@ -273,10 +238,9 @@ Volcanos(chat.ONEXPORT, {
can.ui.myallow && can.onmotion.toggle(can, can.ui.myallow, status && (value._role == "creator" || parseInt(value._role) > 0 || can.page.Select(can, can.ui.myallow, "div.item.index.role."+value._role).length > 0)) can.ui.myallow && can.onmotion.toggle(can, can.ui.myallow, status && (value._role == "creator" || parseInt(value._role) > 0 || can.page.Select(can, can.ui.myallow, "div.item.index.role."+value._role).length > 0))
can.ui.myindex && can.onmotion.toggle(can, can.ui.myindex, status) can.ui.myindex && can.onmotion.toggle(can, can.ui.myindex, status)
if (!can.onmotion.cache(can, function() { return value._uid }, can.ui.header) && value.auth_background) { if (!can.onmotion.cache(can, function() { return value._uid }, can.ui.header) && value.auth_background) {
// can.page.Append(can, can.ui.header, [{img: value.auth_background}]) can.page.Append(can, can.ui.header, [{img: value.auth_background}])
// can.page.ClassList.set(can, can._output, "background", !!can.ui.header.innerHTML) can.page.ClassList.set(can, can._output, "background", !!can.ui.header.innerHTML)
} }
can.onimport.myOption(can.sup)
}, },
index: function(can, value, role) { role = role||value._role index: function(can, value, role) { role = role||value._role
can.ui.role && can.onmotion.toggle(can, can.ui.role, value._role == "creator") can.ui.role && can.onmotion.toggle(can, can.ui.role, value._role == "creator")

View File

@ -9,27 +9,34 @@
"cancel": "取消", "submit": "提交", "finish": "完成", "reject": "驳回", "approve": "通过", "cancel": "取消", "submit": "提交", "finish": "完成", "reject": "驳回", "approve": "通过",
"read": "已读", "done": "完成", "sticky": "置顶", "unSticky": "取消置顶", "read": "已读", "done": "完成", "sticky": "置顶", "unSticky": "取消置顶",
"autogen": "生成", "compile": "编译", "oauth": "授权", "project": "项目", "autogen": "生成", "compile": "编译", "oauth": "授权", "project": "项目",
"marketInsert": "推广", "marketInsert": "推广", "commentCreate": "评论", "applyQRCode": "邀请码",
"marketPlaceEnter": "进入",
"pushPublic": "推广",
"applyCreate": "申请权限",
"commentCreate": "评论", "applyQRCode": "邀请码",
"user": "用户信息", "city": "城市信息", "street": "街道信息", "school": "学校信息", "company": "公司信息", "user": "用户信息", "city": "城市信息", "street": "街道信息", "school": "学校信息", "company": "公司信息",
"auth": "认证", "authCreate": "认证申请", "authCity": "城市认证", "authPersonal": "个人认证", "authService": "服务认证", "authCompany": "公司认证", "auth": "认证", "authCreate": "认证申请", "authCity": "城市认证", "authPersonal": "个人认证", "authService": "服务认证", "authCompany": "公司认证",
"config": "配置", "code": "编程", "data": "数据", "cache": "缓存", "config": "配置", "code": "编程", "data": "数据", "cache": "缓存",
"promote": "升级", "demote": "降级",
"icons": { "icons": {
"market": "bi bi-ubuntu",
"message": "bi bi-card-checklist",
"goodslist": "https://img.icons8.com/officel/80/online-store.png", "goodslist": "https://img.icons8.com/officel/80/online-store.png",
"paymentlist": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png", "paymentlist": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
"meeting": "https://img.icons8.com/officel/80/video-conference.png", "meeting": "https://img.icons8.com/officel/80/video-conference.png",
"document": "https://img.icons8.com/officel/80/documents.png", "document": "https://img.icons8.com/officel/50/documents.png",
"contract": "https://img.icons8.com/officel/80/agreement.png", "contract": "https://img.icons8.com/officel/80/agreement.png",
"photo": "https://img.icons8.com/officel/80/ios-photos.png" "photo": "https://img.icons8.com/officel/50/ios-photos.png",
"credit": "https://img.icons8.com/officel/80/passport.png",
"member": "https://img.icons8.com/officel/80/person-at-home.png",
"setting": "https://img.icons8.com/officel/80/settings--v1.png",
"qrcode": "https://img.icons8.com/officel/80/qr-code.png",
"event": "https://img.icons8.com/officel/80/property-with-timer.png",
"apply": "https://img.icons8.com/officel/80/edit-property.png",
"allow": "https://img.icons8.com/officel/80/receipt-approved.png",
"email": "https://img.icons8.com/officel/80/reading-confirmation.png",
"notice": "https://img.icons8.com/officel/80/commercial.png",
"domain": "https://img.icons8.com/officel/80/categorize.png",
"market": "https://img.icons8.com/officel/80/square.png",
"message": "https://img.icons8.com/officel/80/test-partial-passed.png",
"recent": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"service": "https://img.icons8.com/officel/80/activity-grid.png",
"support": "https://img.icons8.com/officel/80/customer-support.png"
}, },
"style": { "style": {
"marketPlaceEnter": "notice",
"reject": "danger", "reject": "danger",
"approve": "notice", "approve": "notice",
"disable": "danger", "disable": "danger",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,15 +1,13 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { _init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { value._style = []; if (value.score > 0) { value._style = ["sticky"] } can.onimport.myView(can, msg, function(value) { if (value.score > 0) { value._style = ["sticky"] }
if (can._stacks_root._stacks[[value.space,value.index, value.place_uid].join(",")]) { value._style.push("loaded") }
value.icons = can.misc.Resource(can, value.service_icon.split("?")[0], value.space) value.icons = can.misc.Resource(can, value.service_icon.split("?")[0], value.space)
return [ return [
{view: html.TITLE, list: [value.place_name, can.onimport.authView(can, value), can.onimport.timeView(can, value)]}, {view: html.TITLE, list: [value.place_name, can.onimport.authView(can, value), can.onimport.timeView(can, value)]},
{view: html.STATUS, list: [value.city_name, value.street_name, value.service_name]}, {view: html.STATUS, list: [value.city_name, value.street_name, value.service_name]},
] ]
}, function(event, value) { can.onaction._goback(event, function() { }, function(event, value) { can.onaction._goback(event, function() {
// can.onimport.myPlugin(can, {space: value.space, index: value.index, args: [value.place_uid]}) can.onimport.myPlugin(can, {space: value.space, index: value.index, args: [value.place_uid]})
can.onimport.myStory(can, {space: value.space, index: value.index, args: [value.place_uid]})
}) }) }) })
}, },
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -6,7 +6,6 @@ import (
"shylinux.com/x/ice" "shylinux.com/x/ice"
"shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/ctx"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/nfs"
@ -69,13 +68,14 @@ func (s service) Autogen(m *ice.Message, arg ...string) {
cmd := func(arg ...string) { m.Cmd(web.SPACE, m.Option(web.DREAM), arg) } cmd := func(arg ...string) { m.Cmd(web.SPACE, m.Option(web.DREAM), arg) }
if m.Option(web.DREAM) != "" { if m.Option(web.DREAM) != "" {
option := func(ctx, mod string) { cmd(code.AUTOGEN, code.IMPORT, mod, ctx, nfs.SRC_OPTION_GO) } option := func(ctx, mod string) { cmd(code.AUTOGEN, code.IMPORT, mod, ctx, nfs.SRC_OPTION_GO) }
option("shylinux.com/x/ice", "devops") option("shylinux.com/x/mysql-story", "db/mysql")
option("shylinux.com/x/ice", "portal") option("shylinux.com/x/mysql-story", "db/sqlite")
option("shylinux.com/x/community", "gonganxitong")
option("shylinux.com/x/community", "renzhengshouquan")
demo := func(p string) { cmd(nfs.SAVE, p, m.Cmdx(nfs.CAT, p)) } demo := func(p string) { cmd(nfs.SAVE, p, m.Cmdx(nfs.CAT, p)) }
demo("src/template/web.code.autogen/demo.go") demo("src/template/web.code.autogen/demo.go")
demo("src/template/web.code.go/demo.go") demo("src/template/web.code.go/demo.go")
demo("src/template/web.code.js/demo.js") demo("src/template/web.code.js/demo.js")
defer cmd(cli.SYSTEM, "go", "mod", "tidy")
} }
save := func(name string, arg ...string) { save := func(name string, arg ...string) {
cmd(nfs.DEFS, path.Join(p, name), msg.Template("template/"+kit.Select(name, arg, 0))) cmd(nfs.DEFS, path.Join(p, name), msg.Template("template/"+kit.Select(name, arg, 0)))

View File

@ -8,8 +8,7 @@ Volcanos(chat.ONIMPORT, {
{view: html.STATUS, list: [value.module, value.version]}, {view: html.STATUS, list: [value.module, value.version]},
] ]
}, function(event, value) { can.onaction._goback(event, function() { }, function(event, value) { can.onaction._goback(event, function() {
// can.onimport.myPlugin(can, {space: value.space, index: value.index}) can.onimport.myPlugin(can, {space: value.space, index: value.index})
can.onimport.myStory(can, {space: value.space, index: value.index})
}) }) }) })
}, },
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,17 +1,11 @@
title "云社区" title "云社区"
refer ` refer `
官网 https://web.shylinux.com
源码 https://git.shylinux.com/web/community
应用 https://web.shylinux.com/s/20240724-community
`
refer `
GORM https://gorm.io/docs/indexes.html
ICON https://igoutu.cn/icons/officel
ICON https://igoutu.cn/icons/set/%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1--style-officel
公众号 https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=494166701 公众号 https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=494166701
ICON https://igoutu.cn/icons/officel
GORM https://gorm.io/docs/indexes.html
` `
field web.code.mysql.client
field web.code.mysql.query args `mysql gonganxitong`
field web.chat.wx.access field web.chat.wx.access
field web.chat.wx.menu field web.chat.wx.menu
field web.team.gonganxitong.service field web.team.gonganxitong.service
field web.code.mysql.client
field web.code.mysql.query args `mysql gonganxitong`

View File

@ -2,5 +2,8 @@ package main
import ( import (
_ "shylinux.com/x/ice/devops" _ "shylinux.com/x/ice/devops"
_ "shylinux.com/x/ice/portal" _ "shylinux.com/x/mysql-story/src/db/mysql"
_ "shylinux.com/x/mysql-story/src/db/sqlite"
_ "shylinux.com/x/community/src/renzhengshouquan/external"
) )

View File

@ -1,2 +0,0 @@
body.width1 $output div.item.card div.title span.type { margin-left:auto; }
$output div.item.card div.title div.action { top:24px; }

View File

@ -12,20 +12,16 @@ type Auth struct {
cert cert cert cert
order string `data:"2"` order string `data:"2"`
models string `data:"auth"` models string `data:"auth"`
fields string `data:"from_uid,score,name,info,auth_type,auth_status,avatar,background,service_uid,place_uid,user_uid"` fields string `data:"from_uid,name,info,auth_type,auth_status,avatar,background,service_uid,place_uid,user_uid"`
memberList string `name:"memberList" role:"worker"` memberList string `name:"memberList" role:"leader,worker"`
certList string `name:"certList" role:"worker"` certList string `name:"certList" role:"leader,worker"`
issue string `name:"issue" role:"worker"` issue string `name:"issue" role:"leader,worker"`
revoke string `name:"revoke" role:"worker"` revoke string `name:"revoke" role:"leader,worker"`
setScore string `name:"setScore score" role:"void"`
} }
func (s Auth) Remove(m *ice.Message, arg ...string) { func (s Auth) Remove(m *ice.Message, arg ...string) {
s.Delete(m) s.Delete(m)
} }
func (s Auth) SetScore(m *ice.Message, arg ...string) {
s.Update(m, arg, m.OptionSimple(model.UID)...)
}
func (s Auth) List(m *ice.Message, arg ...string) { func (s Auth) List(m *ice.Message, arg ...string) {
if len(arg) == 1 { if len(arg) == 1 {
s.Select(m, model.FROM_UID, arg[0]).Action() s.Select(m, model.FROM_UID, arg[0]).Action()
@ -40,13 +36,13 @@ func (s Auth) List(m *ice.Message, arg ...string) {
case AuthCreate: case AuthCreate:
m.PushButton(s.Issue, s.Remove) m.PushButton(s.Issue, s.Remove)
case AuthIssued: case AuthIssued:
m.PushButton(s.SetScore, s.Revoke) m.PushButton(s.Revoke)
case AuthRevoked: case AuthRevoked:
m.PushButton(s.Issue, s.Remove) m.PushButton(s.Issue, s.Remove)
default: default:
m.PushButton() m.PushButton()
} }
}).Display("").DisplayCSS("") }).Display("")
} }
func (s Auth) SelectList(m *ice.Message, arg ...string) { func (s Auth) SelectList(m *ice.Message, arg ...string) {
s.Table.SelectList(m, arg...).RenameAppend(model.TYPE, model.AUTH_TYPE, model.STATUS, model.AUTH_STATUS) s.Table.SelectList(m, arg...).RenameAppend(model.TYPE, model.AUTH_TYPE, model.STATUS, model.AUTH_STATUS)

View File

@ -1,7 +1,7 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { _init: function(can, msg) {
can.onimport.myView(can, msg, function(value) { return [ can.onimport.myView(can, msg, function(value) { return [
{view: html.TITLE, list: [value.name, value.score, can.onimport.textView(can, value, AUTH_TYPE), can.onimport.titleAction(can, value)]}, {view: html.TITLE, list: [value.name, can.onimport.textView(can, value, AUTH_TYPE), can.onimport.titleAction(can, value)]},
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), can.onimport.textView(can, value)]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), can.onimport.textView(can, value)]},
] }) ] })
}, },

View File

@ -46,8 +46,7 @@ func (s Table) AuthList(m *ice.Message, auth_uid string, cb func(value ice.Maps,
} }
func (s Table) authSort(m *ice.Message, arg ...string) { func (s Table) authSort(m *ice.Message, arg ...string) {
s.RewriteAppend(m) s.RewriteAppend(m)
m.Sort("auth_status,auth_type,score,created_at", []string{"issued"}, m.Sort("auth_status,auth_type,created_at", []string{"issued"}, []string{"personal", "root", "city", "street", "school", "company", "service"}, ice.STR_R)
[]string{"personal", "root", "city", "street", "school", "company", "service"}, ice.INT_R, ice.STR_R)
} }
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
m.RewriteAppend(func(value, key string, index int) string { m.RewriteAppend(func(value, key string, index int) string {

View File

@ -1,6 +1,9 @@
package weixinpayment package weixinpayment
import ( import (
"bytes"
"crypto/x509"
"net/http"
"path" "path"
"strings" "strings"
@ -13,6 +16,8 @@ import (
"shylinux.com/x/community/src/renzhengshouquan/external/weixinpayment/model" "shylinux.com/x/community/src/renzhengshouquan/external/weixinpayment/model"
"github.com/wechatpay-apiv3/wechatpay-go/core" "github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/core/auth/verifiers"
"github.com/wechatpay-apiv3/wechatpay-go/core/notify"
"github.com/wechatpay-apiv3/wechatpay-go/core/option" "github.com/wechatpay-apiv3/wechatpay-go/core/option"
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi" "github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
"github.com/wechatpay-apiv3/wechatpay-go/utils" "github.com/wechatpay-apiv3/wechatpay-go/utils"
@ -62,6 +67,7 @@ func (s weixinpayment) Response(m *ice.Message, arg ...string) {
resp, result, err := svc.QueryOrderByOutTradeNo(m, jsapi.QueryOrderByOutTradeNoRequest{ resp, result, err := svc.QueryOrderByOutTradeNo(m, jsapi.QueryOrderByOutTradeNoRequest{
Mchid: core.String(msg.Append(model.MCH_ID)), Mchid: core.String(msg.Append(model.MCH_ID)),
OutTradeNo: core.String(arg[1]), OutTradeNo: core.String(arg[1]),
// OutTradeNo: core.String("027581e07da12f52dac052d7a8ef7659"),
}) })
m.Info("weixinpayment %s %s %#v", kit.Format(resp), kit.Format(result), err) m.Info("weixinpayment %s %s %#v", kit.Format(resp), kit.Format(result), err)
if err, ok := err.(*core.APIError); ok { if err, ok := err.(*core.APIError); ok {
@ -71,6 +77,33 @@ func (s weixinpayment) Response(m *ice.Message, arg ...string) {
if m.Warn(*resp.TradeState != "SUCCESS") { if m.Warn(*resp.TradeState != "SUCCESS") {
return return
} }
return
request, err := http.NewRequest(http.MethodPost, m.MergePodCmd("", m.PrefixKey()), bytes.NewBufferString(m.Option("request.data")))
if m.Warn(err) {
return
}
kit.For([]string{
"Wechatpay-Serial",
"Wechatpay-Signature",
"Wechatpay-Nonce",
"Wechatpay-Timestamp",
"Wechatpay-Signature-Type",
}, func(k string) { request.Header.Set(k, m.Option(k)) })
content := make(map[string]interface{})
mchAPIv3Key := msg.Append(model.API_KEY)
wechatPayCert, err := utils.LoadCertificate(msg.Append(model.CERT_FILE))
if m.Warn(err) {
return
}
certificateVisitor := core.NewCertificateMapWithList([]*x509.Certificate{wechatPayCert})
handler := notify.NewNotifyHandler(mchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(certificateVisitor))
notifyReq, err := handler.ParseNotifyRequest(m, request, &content)
if m.Warn(err) {
return
}
m.Echo(notifyReq.Summary)
} }
func init() { ice.TeamCtxCmd(weixinpayment{}) } func init() { ice.TeamCtxCmd(weixinpayment{}) }

View File

@ -9,7 +9,6 @@ const (
TYPE = "type" TYPE = "type"
ROLE = "role" ROLE = "role"
STATUS = "status" STATUS = "status"
SCORE = "score"
TITLE = "title" TITLE = "title"
CONTENT = "content" CONTENT = "content"
AVATAR = "avatar" AVATAR = "avatar"
@ -64,7 +63,6 @@ type Auth struct {
StorageUID string `gorm:"type:char(32)"` StorageUID string `gorm:"type:char(32)"`
DashboardUID string `gorm:"type:char(32)"` DashboardUID string `gorm:"type:char(32)"`
Status uint8 `gorm:"default:0"` Status uint8 `gorm:"default:0"`
Score uint8 `gorm:"default:0"`
} }
type Cert struct { type Cert struct {
db.ModelWithUID db.ModelWithUID

View File

@ -12,7 +12,6 @@ import (
type Portal struct { type Portal struct {
guanlixitong.Portal guanlixitong.Portal
fields string `data:"name,info,avatar"`
placeCreate string `name:"placeCreate auth_name* auth_info auth_type*:select from_uid*:select" role:"void"` placeCreate string `name:"placeCreate auth_name* auth_info auth_type*:select from_uid*:select" role:"void"`
} }
@ -42,8 +41,9 @@ func (s Portal) PlaceCreate(m *ice.Message, arg ...string) {
} }
func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message { func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message {
s.Tables(m, s.Place).FieldsWithCreatedAT(m, s.UserPlace, s.Tables(m, s.Place).FieldsWithCreatedAT(m, s.UserPlace,
model.AUTH_UID, model.AUTH_NAME, model.AUTH_INFO, model.AUTH_AVATAR, model.AUTH_UID, model.AUTH_NAME, model.AUTH_INFO, model.AUTH_TYPE, model.USER_AUTH_ROLE, model.AUTH_STATUS,
model.AUTH_TYPE, model.AUTH_STATUS, model.USER_AUTH_ROLE) model.AUTH_AVATAR,
)
if len(arg) == 1 { if len(arg) == 1 {
m.Cmdy(s.UserPlace, s.Table.Select, s.Key(s.UserPlace, model.USER_UID), arg[0]) m.Cmdy(s.UserPlace, s.Table.Select, s.Key(s.UserPlace, model.USER_UID), arg[0])
} else if len(arg) == 2 { } else if len(arg) == 2 {

View File

@ -4,7 +4,6 @@
"certList": "证件", "memberList": "成员", "certList": "证件", "memberList": "成员",
"issue": "认证", "revoke": "吊销", "enter": "进入", "issue": "认证", "revoke": "吊销", "enter": "进入",
"verify": "验证", "verify": "验证",
"setScore": "排序",
"style": { "style": {
"issue": "notice", "issue": "notice",
"revoke": "danger", "revoke": "danger",
@ -44,7 +43,7 @@
} }
}, },
"auth_type": { "auth_type": {
"root": "平台", "root": "官方",
"city": "城市", "city": "城市",
"personal": "个人", "personal": "个人",
"service": "服务", "service": "服务",

View File

@ -1,5 +1,2 @@
$output>div>div.title { border-left:var(--box-notice3); padding:10px; margin-left:10px; } $output>div>div.title { padding:10px; }
$output>div.from>div.title { border-left:var(--box-danger3); }
body.width1 $output div.item.card div.title span.type { margin-left:auto; }
$output div.item.card div.title div.action { top:24px; }
$output>div.head { margin-bottom:0; } $output>div.head { margin-bottom:0; }

View File

@ -35,22 +35,18 @@ func (s profile) List(m *ice.Message, arg ...string) {
} }
s.Select(m, model.UID, arg[0]).Action() s.Select(m, model.UID, arg[0]).Action()
name := m.Append(model.NAME) name := m.Append(model.NAME)
button := []ice.Any{}
kit.If(s.IsWorker(m), func() { button = append(button, s.Modify) })
switch AuthType(kit.Int(m.Append(model.AUTH_TYPE))) { switch AuthType(kit.Int(m.Append(model.AUTH_TYPE))) {
case AuthService: case AuthService:
name = kit.JoinWord(m.Append(model.CITY_NAME), m.Append(model.STREET_NAME), m.Append(model.PLACE_NAME))
kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() })
s.SelectJoinRecent(m, "") s.SelectJoinRecent(m, "")
s.SelectJoinService(m) s.SelectJoinService(m)
name = kit.JoinWord(m.Append(model.CITY_NAME), m.Append(model.STREET_NAME), m.Append(model.PLACE_NAME))
kit.If(s.IsWorker(m), func() { button = append(button, s.Enter) })
case AuthCompany: case AuthCompany:
// kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() }) kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() })
case AuthPersonal: case AuthPersonal:
s.SelectJoinUser(m) s.SelectJoinUser(m)
case AuthCity: case AuthCity:
case AuthRoot:
} }
m.PushAction(button...)
m.EchoQRCode(s.Link(m, arg[0], m.PrefixKey())).Echo(name) m.EchoQRCode(s.Link(m, arg[0], m.PrefixKey())).Echo(name)
m.Display("").DisplayCSS("") m.Display("").DisplayCSS("")
s.RewriteAppend(m) s.RewriteAppend(m)
@ -83,7 +79,6 @@ func (s profile) MemberList(m *ice.Message, arg ...string) {
m.PushButton() m.PushButton()
} }
}) })
s.authSort(m)
s.RewriteAppend(m) s.RewriteAppend(m)
} }
func (s profile) ServiceList(m *ice.Message, arg ...string) { func (s profile) ServiceList(m *ice.Message, arg ...string) {

View File

@ -62,8 +62,7 @@ Volcanos(chat.ONACTION, {
if (msg.Option("auth_type") == "company") { if (msg.Option("auth_type") == "company") {
can.user.open(can.misc.MergePodCmd(can, {pod: "20240724-community", cmd: "web.team.renzhengshouquan.admin", auth_uid: msg.Option("auth_uid"), view: "admin"})) can.user.open(can.misc.MergePodCmd(can, {pod: "20240724-community", cmd: "web.team.renzhengshouquan.admin", auth_uid: msg.Option("auth_uid"), view: "admin"}))
} else { } else {
can.onimport.myStory(can, {space: msg.Option("nodename"), index: msg.Option(ctx.INDEX), args: [msg.Option(PLACE_UID)]}) can.onimport.myPlugin(can, {space: msg.Option("nodename"), index: msg.Option(ctx.INDEX), args: [msg.Option(PLACE_UID)]})
// can.onimport.myPlugin(can, {space: msg.Option("nodename"), index: msg.Option(ctx.INDEX), args: [msg.Option(PLACE_UID)]})
} }
can.page.ClassList.del(can, can._fields, "_process") can.page.ClassList.del(can, can._fields, "_process")
}, },

View File

@ -1,7 +1,7 @@
{ {
"1246961a1d880252ead389142acd037b": { "1246961a1d880252ead389142acd037b": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/setting.png", "icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.gonganxitong.setting", "index": "web.team.gonganxitong.setting",
"name": "服务配置", "name": "服务配置",
"order": "103", "order": "103",
@ -11,7 +11,7 @@
}, },
"153c93456004ec2ca692d3bac2223167": { "153c93456004ec2ca692d3bac2223167": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/service.png", "icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.gonganxitong.service", "index": "web.team.gonganxitong.service",
"name": "服务发现", "name": "服务发现",
"order": "904", "order": "904",
@ -21,7 +21,7 @@
"22574299a657140d473f0216b8d83710": { "22574299a657140d473f0216b8d83710": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/documents.png", "icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.gonganxitong.document", "index": "web.team.gonganxitong.document",
"name": "在线文档", "name": "在线文档",
"order": "94", "order": "94",
@ -31,7 +31,7 @@
}, },
"27c6988eeb07c78cbb49aa15c577cfa4": { "27c6988eeb07c78cbb49aa15c577cfa4": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/apply.png", "icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.gonganxitong.apply", "index": "web.team.gonganxitong.apply",
"name": "权限申请", "name": "权限申请",
"order": "502", "order": "502",
@ -53,7 +53,7 @@
}, },
"3971882ea4f32c86386ad04b39d3e3d4": { "3971882ea4f32c86386ad04b39d3e3d4": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/market.png", "icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.gonganxitong.market", "index": "web.team.gonganxitong.market",
"name": "人民广场", "name": "人民广场",
"order": "901", "order": "901",
@ -74,7 +74,7 @@
"882a999b4a72a9866d9e4eef110d335a": { "882a999b4a72a9866d9e4eef110d335a": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/ios-photos.png", "icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.gonganxitong.photo", "index": "web.team.gonganxitong.photo",
"name": "在线相册", "name": "在线相册",
"order": "96", "order": "96",
@ -84,7 +84,7 @@
}, },
"8ce4dfb877e04e3be5144253fdd5d8ff": { "8ce4dfb877e04e3be5144253fdd5d8ff": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/allow.png", "icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.gonganxitong.allow", "index": "web.team.gonganxitong.allow",
"name": "权限审批", "name": "权限审批",
"order": "503", "order": "503",
@ -94,7 +94,7 @@
}, },
"a53e36dcca735ef90b649fec546f520e": { "a53e36dcca735ef90b649fec546f520e": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/credit.png", "icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.gonganxitong.credit", "index": "web.team.gonganxitong.credit",
"name": "用户名片", "name": "用户名片",
"order": "101", "order": "101",
@ -103,7 +103,7 @@
}, },
"a89a7c09e326295aaa7e7ea3d66fb28a": { "a89a7c09e326295aaa7e7ea3d66fb28a": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/support.png", "icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.gonganxitong.support", "index": "web.team.gonganxitong.support",
"name": "客服支持", "name": "客服支持",
"order": "905", "order": "905",
@ -128,7 +128,7 @@
}, },
"bdec92d5849b2a60a8811cff494f2391": { "bdec92d5849b2a60a8811cff494f2391": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/event.png", "icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.gonganxitong.event", "index": "web.team.gonganxitong.event",
"name": "事件流", "name": "事件流",
"order": "504", "order": "504",
@ -138,7 +138,7 @@
}, },
"be08ca65be90feca325df128a06e440f": { "be08ca65be90feca325df128a06e440f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/recent.png", "icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.gonganxitong.recent", "index": "web.team.gonganxitong.recent",
"name": "最近访问", "name": "最近访问",
"order": "903", "order": "903",
@ -147,7 +147,7 @@
}, },
"c1526ecd405021d6d47798c066bf70c0": { "c1526ecd405021d6d47798c066bf70c0": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/notice.png", "icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.gonganxitong.notice", "index": "web.team.gonganxitong.notice",
"name": "通知公告", "name": "通知公告",
"order": "505", "order": "505",
@ -187,7 +187,7 @@
}, },
"e2117b53c036a72fe7e4885449488a6f": { "e2117b53c036a72fe7e4885449488a6f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/qrcode.png", "icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.gonganxitong.qrcode", "index": "web.team.gonganxitong.qrcode",
"name": "场景码", "name": "场景码",
"order": "501", "order": "501",
@ -208,7 +208,7 @@
}, },
"f28c03b5bdbbe92ebc89dabca5e7d4de": { "f28c03b5bdbbe92ebc89dabca5e7d4de": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/member.png", "icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.gonganxitong.member", "index": "web.team.gonganxitong.member",
"name": "组织成员", "name": "组织成员",
"order": "102", "order": "102",
@ -218,7 +218,7 @@
}, },
"fd1884bbeb1f1a83f4e12f857bfe5b15": { "fd1884bbeb1f1a83f4e12f857bfe5b15": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/message.png", "icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.gonganxitong.message", "index": "web.team.gonganxitong.message",
"name": "消息待办", "name": "消息待办",
"order": "902", "order": "902",

View File

@ -9,7 +9,7 @@
}, },
"030e2a53ca3561a0d0d123c133a88b59": { "030e2a53ca3561a0d0d123c133a88b59": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.guanlixitong.qrcode", "index": "web.team.guanlixitong.qrcode",
"name": "场景码", "name": "场景码",
"order": "1", "order": "1",
@ -25,7 +25,7 @@
}, },
"0521e637b051a0e175a6070eded1bcef": { "0521e637b051a0e175a6070eded1bcef": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.guanlixitong.setting", "index": "web.team.guanlixitong.setting",
"name": "服务配置", "name": "服务配置",
"order": "102", "order": "102",
@ -35,7 +35,7 @@
}, },
"057616b7366e1930ef4e4a921fe45f1f": { "057616b7366e1930ef4e4a921fe45f1f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.guanlixitong.service", "index": "web.team.guanlixitong.service",
"name": "服务发现", "name": "服务发现",
"order": "100", "order": "100",
@ -61,7 +61,7 @@
}, },
"2fd80c581b69c9f67420e793804dbd9f": { "2fd80c581b69c9f67420e793804dbd9f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.guanlixitong.credit", "index": "web.team.guanlixitong.credit",
"name": "用户名片", "name": "用户名片",
"order": "102", "order": "102",
@ -70,7 +70,7 @@
}, },
"30bfa47cab4cd689901fd2e1b87eb235": { "30bfa47cab4cd689901fd2e1b87eb235": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.guanlixitong.allow", "index": "web.team.guanlixitong.allow",
"name": "权限审批", "name": "权限审批",
"order": "4", "order": "4",
@ -86,16 +86,9 @@
"time": "2024-11-08 14:04:38.597" "time": "2024-11-08 14:04:38.597"
} }
}, },
"45a953c0d57edbfcece5f53e62d04bd3": {
"meta": {
"icons": "/p/usr/local/work/20240724-enterprise/src/guanlixitong/src/gonganxitong/spendlist.png",
"index": "web.team.guanlixitong.spendlist",
"time": "2025-04-19 08:28:11.730"
}
},
"5695d50b28872804a01d7c923ee91cd1": { "5695d50b28872804a01d7c923ee91cd1": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.guanlixitong.member", "index": "web.team.guanlixitong.member",
"name": "团队成员", "name": "团队成员",
"order": "5", "order": "5",
@ -111,7 +104,7 @@
}, },
"78d29149539be88d7561b8e17bd65882": { "78d29149539be88d7561b8e17bd65882": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.guanlixitong.market", "index": "web.team.guanlixitong.market",
"name": "人民广场", "name": "人民广场",
"order": "100", "order": "100",
@ -131,7 +124,7 @@
}, },
"809b63c1819fc3ac1452e3b71889aec5": { "809b63c1819fc3ac1452e3b71889aec5": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.guanlixitong.notice", "index": "web.team.guanlixitong.notice",
"name": "通知公告", "name": "通知公告",
"order": "70", "order": "70",
@ -142,7 +135,7 @@
"8548d5ce3faee7bd508d2fb53d57f35b": { "8548d5ce3faee7bd508d2fb53d57f35b": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/ios-photos.png", "icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.guanlixitong.photo", "index": "web.team.guanlixitong.photo",
"name": "在线相册", "name": "在线相册",
"order": "95", "order": "95",
@ -152,7 +145,7 @@
}, },
"9c18032c5bc252f2986e1b20e7e77db7": { "9c18032c5bc252f2986e1b20e7e77db7": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.guanlixitong.event", "index": "web.team.guanlixitong.event",
"name": "事件流", "name": "事件流",
"order": "2", "order": "2",
@ -162,7 +155,7 @@
}, },
"9fffbe375e2d2a1a8e6cb1f341e35b55": { "9fffbe375e2d2a1a8e6cb1f341e35b55": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.guanlixitong.recent", "index": "web.team.guanlixitong.recent",
"name": "最近访问", "name": "最近访问",
"order": "100", "order": "100",
@ -177,13 +170,6 @@
"time": "2024-08-07 08:09:16.533" "time": "2024-08-07 08:09:16.533"
} }
}, },
"a59e847a365ef89dd35e250e9b663ac3": {
"meta": {
"icons": "/p/usr/local/work/20240724-enterprise/src/guanlixitong/src/gonganxitong/quotalist.png",
"index": "web.team.guanlixitong.quotalist",
"time": "2025-04-19 08:28:11.714"
}
},
"ace6350cd663c693ddf47e81625c8a7a": { "ace6350cd663c693ddf47e81625c8a7a": {
"meta": { "meta": {
"icons": "https://img.icons8.com/officel/80/meeting.png", "icons": "https://img.icons8.com/officel/80/meeting.png",
@ -216,7 +202,7 @@
}, },
"c27ad1df8aa9059d6018fb5add5ee546": { "c27ad1df8aa9059d6018fb5add5ee546": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.guanlixitong.support", "index": "web.team.guanlixitong.support",
"name": "客服支持", "name": "客服支持",
"order": "100", "order": "100",
@ -233,7 +219,7 @@
}, },
"c36d47e2611b0d1e7a14088bc3293d04": { "c36d47e2611b0d1e7a14088bc3293d04": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.guanlixitong.apply", "index": "web.team.guanlixitong.apply",
"name": "权限申请", "name": "权限申请",
"order": "3", "order": "3",
@ -254,7 +240,7 @@
}, },
"d25f3f88261ead2a0079415a26aa6853": { "d25f3f88261ead2a0079415a26aa6853": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.guanlixitong.message", "index": "web.team.guanlixitong.message",
"name": "消息待办", "name": "消息待办",
"order": "100", "order": "100",
@ -275,7 +261,7 @@
"e595a0bbefbcfaa89f45dd875cc6fe0b": { "e595a0bbefbcfaa89f45dd875cc6fe0b": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/documents.png", "icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.guanlixitong.document", "index": "web.team.guanlixitong.document",
"name": "在线文档", "name": "在线文档",
"order": "93", "order": "93",

View File

@ -1,11 +1,4 @@
{ {
"1e158e9083bfe07ac5a35353fdcdf62e": {
"meta": {
"icons": "/p/src/huodongzuzhi/src/gonganxitong/spendlist.png",
"index": "web.team.huodongzuzhi.spendlist",
"time": "2025-04-19 08:28:11.641"
}
},
"2c5f42d846b438a22e62b19617ebf511": { "2c5f42d846b438a22e62b19617ebf511": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
@ -19,7 +12,7 @@
}, },
"3229a1bc7aa326822c4f4f267e038185": { "3229a1bc7aa326822c4f4f267e038185": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.huodongzuzhi.member", "index": "web.team.huodongzuzhi.member",
"name": "组织成员", "name": "组织成员",
"order": "102", "order": "102",
@ -27,13 +20,6 @@
"time": "2024-08-25 12:53:13.205" "time": "2024-08-25 12:53:13.205"
} }
}, },
"3745803fab1393312d3e1d2e589e1e9f": {
"meta": {
"icons": "/p/src/huodongzuzhi/src/gonganxitong/quotalist.png",
"index": "web.team.huodongzuzhi.quotalist",
"time": "2025-04-19 08:28:11.635"
}
},
"3e9e80db9ae3768b7a44774c7afa5f65": { "3e9e80db9ae3768b7a44774c7afa5f65": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
@ -48,7 +34,7 @@
"49432b349d456f4108dcfa7d28435bac": { "49432b349d456f4108dcfa7d28435bac": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/documents.png", "icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.huodongzuzhi.document", "index": "web.team.huodongzuzhi.document",
"name": "在线文档", "name": "在线文档",
"order": "93", "order": "93",
@ -58,7 +44,7 @@
}, },
"595eb34d7ebe62e160c02ed5b127d637": { "595eb34d7ebe62e160c02ed5b127d637": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.huodongzuzhi.message", "index": "web.team.huodongzuzhi.message",
"name": "消息待办", "name": "消息待办",
"order": "902", "order": "902",
@ -67,7 +53,7 @@
}, },
"780939d4c095806dba8711d8753cbdf7": { "780939d4c095806dba8711d8753cbdf7": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.huodongzuzhi.support", "index": "web.team.huodongzuzhi.support",
"name": "客服支持", "name": "客服支持",
"order": "905", "order": "905",
@ -76,7 +62,7 @@
}, },
"7a02092e26efa3eb324259a5d28bc8f3": { "7a02092e26efa3eb324259a5d28bc8f3": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.huodongzuzhi.credit", "index": "web.team.huodongzuzhi.credit",
"name": "用户名片", "name": "用户名片",
"order": "101", "order": "101",
@ -85,7 +71,7 @@
}, },
"7a7da5c5e42a9aa1d88109fa8620d465": { "7a7da5c5e42a9aa1d88109fa8620d465": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.huodongzuzhi.event", "index": "web.team.huodongzuzhi.event",
"name": "事件流", "name": "事件流",
"order": "504", "order": "504",
@ -95,7 +81,7 @@
}, },
"94996b048561b144e2a47ff6cc2a9e5c": { "94996b048561b144e2a47ff6cc2a9e5c": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.huodongzuzhi.service", "index": "web.team.huodongzuzhi.service",
"name": "服务发现", "name": "服务发现",
"order": "904", "order": "904",
@ -113,7 +99,7 @@
}, },
"aa74e6bf51d1d1abab57fdb03b08c5c2": { "aa74e6bf51d1d1abab57fdb03b08c5c2": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.huodongzuzhi.market", "index": "web.team.huodongzuzhi.market",
"name": "人民广场", "name": "人民广场",
"order": "901", "order": "901",
@ -122,7 +108,7 @@
}, },
"baec1db59218f2da9d560fa719c6a12f": { "baec1db59218f2da9d560fa719c6a12f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.huodongzuzhi.apply", "index": "web.team.huodongzuzhi.apply",
"name": "权限申请", "name": "权限申请",
"order": "502", "order": "502",
@ -132,7 +118,7 @@
}, },
"c3fbb2049e914eda48f3f7d32c207679": { "c3fbb2049e914eda48f3f7d32c207679": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.huodongzuzhi.qrcode", "index": "web.team.huodongzuzhi.qrcode",
"name": "场景码", "name": "场景码",
"order": "501", "order": "501",
@ -142,7 +128,7 @@
}, },
"dae66500cd381d400f15cd4c9efc05b1": { "dae66500cd381d400f15cd4c9efc05b1": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.huodongzuzhi.allow", "index": "web.team.huodongzuzhi.allow",
"name": "权限审批", "name": "权限审批",
"order": "503", "order": "503",
@ -164,7 +150,7 @@
"e5ce14fa8331355abad8cc68c25c74a4": { "e5ce14fa8331355abad8cc68c25c74a4": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/ios-photos.png", "icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.huodongzuzhi.photo", "index": "web.team.huodongzuzhi.photo",
"name": "在线相册", "name": "在线相册",
"order": "95", "order": "95",
@ -185,7 +171,7 @@
}, },
"ee364ed77eb0383868d48260f8b5aeb2": { "ee364ed77eb0383868d48260f8b5aeb2": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.huodongzuzhi.notice", "index": "web.team.huodongzuzhi.notice",
"name": "通知公告", "name": "通知公告",
"order": "505", "order": "505",
@ -195,7 +181,7 @@
}, },
"f77a8f8d7dfe49f8e82ecd8d0b99f233": { "f77a8f8d7dfe49f8e82ecd8d0b99f233": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.huodongzuzhi.recent", "index": "web.team.huodongzuzhi.recent",
"name": "最近访问", "name": "最近访问",
"order": "903", "order": "903",
@ -204,7 +190,7 @@
}, },
"f78dbbb843f056f5db196c342f1184bc": { "f78dbbb843f056f5db196c342f1184bc": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.huodongzuzhi.setting", "index": "web.team.huodongzuzhi.setting",
"name": "服务配置", "name": "服务配置",
"order": "103", "order": "103",

View File

@ -3,7 +3,7 @@
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"enable": "false", "enable": "false",
"icons": "https://img.icons8.com/officel/80/ios-photos.png", "icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.renzhengshouquan.photo", "index": "web.team.renzhengshouquan.photo",
"name": "在线相册", "name": "在线相册",
"order": "96", "order": "96",
@ -13,7 +13,7 @@
}, },
"0d7f068029dbf7f9f0d307070cc3a79b": { "0d7f068029dbf7f9f0d307070cc3a79b": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.renzhengshouquan.allow", "index": "web.team.renzhengshouquan.allow",
"name": "权限审批", "name": "权限审批",
"order": "503", "order": "503",
@ -25,7 +25,7 @@
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"enable": "false", "enable": "false",
"icons": "https://img.icons8.com/officel/80/documents.png", "icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.renzhengshouquan.document", "index": "web.team.renzhengshouquan.document",
"name": "在线文档", "name": "在线文档",
"order": "95", "order": "95",
@ -45,13 +45,6 @@
"time": "2024-11-25 18:11:44.121" "time": "2024-11-25 18:11:44.121"
} }
}, },
"1d5fb457d3223d26afd076c38d7daf66": {
"meta": {
"icons": "/p/src/renzhengshouquan/src/gonganxitong/quotalist.png",
"index": "web.team.renzhengshouquan.quotalist",
"time": "2025-04-19 08:28:11.519"
}
},
"1d7c44014bc23b3db4551534359c95c4": { "1d7c44014bc23b3db4551534359c95c4": {
"meta": { "meta": {
"icons": "https://img.icons8.com/officel/80/video-conference.png", "icons": "https://img.icons8.com/officel/80/video-conference.png",
@ -63,13 +56,6 @@
"type": "company,school,street" "type": "company,school,street"
} }
}, },
"21887f37ce8dabe4c52648ea096f8e4d": {
"meta": {
"icons": "/p/src/renzhengshouquan/src/gonganxitong/spendlist.png",
"index": "web.team.renzhengshouquan.spendlist",
"time": "2025-04-19 08:28:11.518"
}
},
"2a065e0a48b909ae79fbb3dd750e1eb5": { "2a065e0a48b909ae79fbb3dd750e1eb5": {
"meta": { "meta": {
"icons": "https://img.icons8.com/officel/80/id-verified.png", "icons": "https://img.icons8.com/officel/80/id-verified.png",
@ -83,7 +69,7 @@
}, },
"456d3a031a140d43f54690ea7203628d": { "456d3a031a140d43f54690ea7203628d": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.renzhengshouquan.event", "index": "web.team.renzhengshouquan.event",
"name": "事件流", "name": "事件流",
"order": "504", "order": "504",
@ -105,7 +91,7 @@
"4cac9ca99ccb8db395f703434647f5f3": { "4cac9ca99ccb8db395f703434647f5f3": {
"meta": { "meta": {
"enable": "false", "enable": "false",
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.renzhengshouquan.setting", "index": "web.team.renzhengshouquan.setting",
"name": "服务配置", "name": "服务配置",
"order": "103", "order": "103",
@ -127,7 +113,7 @@
}, },
"52fb3a7d85d879b638cc246850b236f6": { "52fb3a7d85d879b638cc246850b236f6": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.renzhengshouquan.qrcode", "index": "web.team.renzhengshouquan.qrcode",
"name": "场景码", "name": "场景码",
"order": "501", "order": "501",
@ -162,7 +148,7 @@
}, },
"732373815fa26c85ad04dd57ca57db39": { "732373815fa26c85ad04dd57ca57db39": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.renzhengshouquan.apply", "index": "web.team.renzhengshouquan.apply",
"name": "权限申请", "name": "权限申请",
"order": "502", "order": "502",
@ -228,7 +214,7 @@
}, },
"9e52a4f0a1a8d35c14b40d14b0d9cff1": { "9e52a4f0a1a8d35c14b40d14b0d9cff1": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.renzhengshouquan.message", "index": "web.team.renzhengshouquan.message",
"name": "消息待办", "name": "消息待办",
"order": "902", "order": "902",
@ -237,7 +223,7 @@
}, },
"a040dfa713a6fa9533b3184244dbbb74": { "a040dfa713a6fa9533b3184244dbbb74": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.renzhengshouquan.support", "index": "web.team.renzhengshouquan.support",
"name": "客服支持", "name": "客服支持",
"order": "905", "order": "905",
@ -276,7 +262,7 @@
"bfecb55b11fe68186270fe1b4b8de8cf": { "bfecb55b11fe68186270fe1b4b8de8cf": {
"meta": { "meta": {
"enable": "false", "enable": "false",
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.renzhengshouquan.member", "index": "web.team.renzhengshouquan.member",
"name": "组织成员", "name": "组织成员",
"order": "102", "order": "102",
@ -298,7 +284,7 @@
}, },
"d9f55b517f4b2579693523ed3b5bd088": { "d9f55b517f4b2579693523ed3b5bd088": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.renzhengshouquan.market", "index": "web.team.renzhengshouquan.market",
"name": "人民广场", "name": "人民广场",
"order": "901", "order": "901",
@ -319,7 +305,7 @@
}, },
"e038450591f3c8e7babc0c21b1c6fa6d": { "e038450591f3c8e7babc0c21b1c6fa6d": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.renzhengshouquan.recent", "index": "web.team.renzhengshouquan.recent",
"name": "最近访问", "name": "最近访问",
"order": "903", "order": "903",
@ -328,7 +314,7 @@
}, },
"ecfb11fad5b4bdf21384e2e1ff571598": { "ecfb11fad5b4bdf21384e2e1ff571598": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.renzhengshouquan.notice", "index": "web.team.renzhengshouquan.notice",
"name": "通知公告", "name": "通知公告",
"order": "505", "order": "505",
@ -339,7 +325,7 @@
"f669e15e1c1c9da2bd3ea0c58abc0bd3": { "f669e15e1c1c9da2bd3ea0c58abc0bd3": {
"meta": { "meta": {
"enable": "false", "enable": "false",
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.renzhengshouquan.credit", "index": "web.team.renzhengshouquan.credit",
"name": "用户名片", "name": "用户名片",
"order": "101", "order": "101",
@ -348,7 +334,7 @@
}, },
"f6b093d122ff3cec363b00093e0a6f19": { "f6b093d122ff3cec363b00093e0a6f19": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.renzhengshouquan.service", "index": "web.team.renzhengshouquan.service",
"name": "服务发现", "name": "服务发现",
"order": "904", "order": "904",

View File

@ -32,7 +32,7 @@
}, },
"2ed70cba7eb6d3cf5fbe712c63da87a7": { "2ed70cba7eb6d3cf5fbe712c63da87a7": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/square.png",
"index": "web.team.yuehaoxitong.market", "index": "web.team.yuehaoxitong.market",
"name": "人民广场", "name": "人民广场",
"order": "901", "order": "901",
@ -41,7 +41,7 @@
}, },
"2f55ab55e536839d2f400ed50832bfb9": { "2f55ab55e536839d2f400ed50832bfb9": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/passport.png",
"index": "web.team.yuehaoxitong.credit", "index": "web.team.yuehaoxitong.credit",
"name": "用户名片", "name": "用户名片",
"order": "101", "order": "101",
@ -61,7 +61,7 @@
}, },
"377f3c0dae9dbf423a8e188bfd245b7a": { "377f3c0dae9dbf423a8e188bfd245b7a": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
"index": "web.team.yuehaoxitong.recent", "index": "web.team.yuehaoxitong.recent",
"name": "最近访问", "name": "最近访问",
"order": "903", "order": "903",
@ -70,7 +70,7 @@
}, },
"3b6da44aaf19fdb06c84fe352569359f": { "3b6da44aaf19fdb06c84fe352569359f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/qr-code.png",
"index": "web.team.yuehaoxitong.qrcode", "index": "web.team.yuehaoxitong.qrcode",
"name": "场景码", "name": "场景码",
"order": "501", "order": "501",
@ -80,7 +80,7 @@
}, },
"46f2ba39a0620f04aab46a999c359a2b": { "46f2ba39a0620f04aab46a999c359a2b": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/receipt-approved.png",
"index": "web.team.yuehaoxitong.allow", "index": "web.team.yuehaoxitong.allow",
"name": "权限审批", "name": "权限审批",
"order": "503", "order": "503",
@ -90,7 +90,7 @@
}, },
"55ef7eaaa62b19b296b633c1c550f756": { "55ef7eaaa62b19b296b633c1c550f756": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/settings--v1.png",
"index": "web.team.yuehaoxitong.setting", "index": "web.team.yuehaoxitong.setting",
"name": "服务配置", "name": "服务配置",
"order": "103", "order": "103",
@ -129,13 +129,6 @@
"time": "2024-08-11 09:30:00.538" "time": "2024-08-11 09:30:00.538"
} }
}, },
"79934714b27083087d2ea771e19192d3": {
"meta": {
"icons": "/p/src/yuehaoxitong/src/gonganxitong/spendlist.png",
"index": "web.team.yuehaoxitong.spendlist",
"time": "2025-04-19 08:28:11.381"
}
},
"8d3a66184c4da374081216d6c4d491b5": { "8d3a66184c4da374081216d6c4d491b5": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
@ -149,7 +142,7 @@
}, },
"98d6d53a44113b33a82c4e914cb23489": { "98d6d53a44113b33a82c4e914cb23489": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
"index": "web.team.yuehaoxitong.message", "index": "web.team.yuehaoxitong.message",
"name": "消息待办", "name": "消息待办",
"order": "902", "order": "902",
@ -159,7 +152,7 @@
"a3d526b8fc09121a7186775cca6d9026": { "a3d526b8fc09121a7186775cca6d9026": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/ios-photos.png", "icons": "https://img.icons8.com/officel/50/ios-photos.png",
"index": "web.team.yuehaoxitong.photo", "index": "web.team.yuehaoxitong.photo",
"name": "在线相册", "name": "在线相册",
"order": "95", "order": "95",
@ -169,7 +162,7 @@
}, },
"a56cb18131ff45616849e4555e29d35d": { "a56cb18131ff45616849e4555e29d35d": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/edit-property.png",
"index": "web.team.yuehaoxitong.apply", "index": "web.team.yuehaoxitong.apply",
"name": "权限申请", "name": "权限申请",
"order": "502", "order": "502",
@ -189,7 +182,7 @@
}, },
"b66f57a7a84d982b1b3a74ac3bdc045c": { "b66f57a7a84d982b1b3a74ac3bdc045c": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/commercial.png",
"index": "web.team.yuehaoxitong.notice", "index": "web.team.yuehaoxitong.notice",
"name": "通知公告", "name": "通知公告",
"order": "505", "order": "505",
@ -199,7 +192,7 @@
}, },
"b811b4ed8b1b372958bbb4bb1b2709b8": { "b811b4ed8b1b372958bbb4bb1b2709b8": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/customer-support.png",
"index": "web.team.yuehaoxitong.support", "index": "web.team.yuehaoxitong.support",
"name": "客服支持", "name": "客服支持",
"order": "905", "order": "905",
@ -229,7 +222,7 @@
}, },
"c14a5a400c933fe799ed10b069990865": { "c14a5a400c933fe799ed10b069990865": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/person-at-home.png",
"index": "web.team.yuehaoxitong.member", "index": "web.team.yuehaoxitong.member",
"name": "组织成员", "name": "组织成员",
"order": "102", "order": "102",
@ -237,17 +230,10 @@
"time": "2024-08-12 08:56:10.816" "time": "2024-08-12 08:56:10.816"
} }
}, },
"ca139b34295fc6d13d97430764cf3334": {
"meta": {
"icons": "/p/src/yuehaoxitong/src/gonganxitong/quotalist.png",
"index": "web.team.yuehaoxitong.quotalist",
"time": "2025-04-19 08:28:11.483"
}
},
"cb5d53223069ec8d9914ec30ca84ec4a": { "cb5d53223069ec8d9914ec30ca84ec4a": {
"meta": { "meta": {
"auth": "issued", "auth": "issued",
"icons": "https://img.icons8.com/officel/80/documents.png", "icons": "https://img.icons8.com/officel/50/documents.png",
"index": "web.team.yuehaoxitong.document", "index": "web.team.yuehaoxitong.document",
"name": "在线文档", "name": "在线文档",
"order": "93", "order": "93",
@ -257,7 +243,7 @@
}, },
"d1e03d214890c9a4b9557d3f6a36c7e9": { "d1e03d214890c9a4b9557d3f6a36c7e9": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/activity-grid.png",
"index": "web.team.yuehaoxitong.service", "index": "web.team.yuehaoxitong.service",
"name": "服务发现", "name": "服务发现",
"order": "904", "order": "904",
@ -275,7 +261,7 @@
}, },
"fa4365d6c914365e4b047c9266e9a02f": { "fa4365d6c914365e4b047c9266e9a02f": {
"meta": { "meta": {
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community", "icons": "https://img.icons8.com/officel/80/property-with-timer.png",
"index": "web.team.yuehaoxitong.event", "index": "web.team.yuehaoxitong.event",
"name": "事件流", "name": "事件流",
"order": "504", "order": "504",