mirror of
https://shylinux.com/x/community
synced 2025-04-25 17:48:06 +08:00
add some
This commit is contained in:
parent
f4704d36b9
commit
2351b26ecf
69
src/api/20240724-community.go
Normal file
69
src/api/20240724-community.go
Normal file
@ -0,0 +1,69 @@
|
||||
package api
|
||||
|
||||
const GONGANXITONG_PORTAL = "web.team.gonganxitong.portal"
|
||||
const GONGANXITONG_ALLOW = "web.team.gonganxitong.allow"
|
||||
const GONGANXITONG_APPLY = "web.team.gonganxitong.apply"
|
||||
const GONGANXITONG_DOMAIN = "web.team.gonganxitong.domain"
|
||||
const GONGANXITONG_EMAIL = "web.team.gonganxitong.email"
|
||||
const GONGANXITONG_EVENT = "web.team.gonganxitong.event"
|
||||
const GONGANXITONG_MARKET = "web.team.gonganxitong.market"
|
||||
const GONGANXITONG_MEMBER = "web.team.gonganxitong.member"
|
||||
const GONGANXITONG_MESSAGE = "web.team.gonganxitong.message"
|
||||
const GONGANXITONG_NOTICE = "web.team.gonganxitong.notice"
|
||||
const GONGANXITONG_QRCODE = "web.team.gonganxitong.qrcode"
|
||||
const GONGANXITONG_RECENT = "web.team.gonganxitong.recent"
|
||||
const GONGANXITONG_SERVICE = "web.team.gonganxitong.service"
|
||||
const GONGANXITONG_SETTING = "web.team.gonganxitong.setting"
|
||||
const GONGANXITONG_SUPPORT = "web.team.gonganxitong.support"
|
||||
const HUODONGZUZHI_ACTIVITY = "web.team.huodongzuzhi.activity"
|
||||
const HUODONGZUZHI_PORTAL = "web.team.huodongzuzhi.portal"
|
||||
const HUODONGZUZHI_ALLOW = "web.team.huodongzuzhi.allow"
|
||||
const HUODONGZUZHI_APPLY = "web.team.huodongzuzhi.apply"
|
||||
const HUODONGZUZHI_EVENT = "web.team.huodongzuzhi.event"
|
||||
const HUODONGZUZHI_MARKET = "web.team.huodongzuzhi.market"
|
||||
const HUODONGZUZHI_MEMBER = "web.team.huodongzuzhi.member"
|
||||
const HUODONGZUZHI_MESSAGE = "web.team.huodongzuzhi.message"
|
||||
const HUODONGZUZHI_NOTICE = "web.team.huodongzuzhi.notice"
|
||||
const HUODONGZUZHI_QRCODE = "web.team.huodongzuzhi.qrcode"
|
||||
const HUODONGZUZHI_RECENT = "web.team.huodongzuzhi.recent"
|
||||
const HUODONGZUZHI_SERVICE = "web.team.huodongzuzhi.service"
|
||||
const HUODONGZUZHI_SETTING = "web.team.huodongzuzhi.setting"
|
||||
const HUODONGZUZHI_SUPPORT = "web.team.huodongzuzhi.support"
|
||||
const RENZHENGSHOUQUAN_PORTAL = "web.team.renzhengshouquan.portal"
|
||||
const RENZHENGSHOUQUAN_ALLOW = "web.team.renzhengshouquan.allow"
|
||||
const RENZHENGSHOUQUAN_APPLY = "web.team.renzhengshouquan.apply"
|
||||
const RENZHENGSHOUQUAN_AUTH = "web.team.renzhengshouquan.auth"
|
||||
const RENZHENGSHOUQUAN_CERT = "web.team.renzhengshouquan.cert"
|
||||
const RENZHENGSHOUQUAN_DOMAIN = "web.team.renzhengshouquan.domain"
|
||||
const RENZHENGSHOUQUAN_EVENT = "web.team.renzhengshouquan.event"
|
||||
const RENZHENGSHOUQUAN_MARKET = "web.team.renzhengshouquan.market"
|
||||
const RENZHENGSHOUQUAN_MEMBER = "web.team.renzhengshouquan.member"
|
||||
const RENZHENGSHOUQUAN_MESSAGE = "web.team.renzhengshouquan.message"
|
||||
const RENZHENGSHOUQUAN_NOTICE = "web.team.renzhengshouquan.notice"
|
||||
const RENZHENGSHOUQUAN_PROFILE = "web.team.renzhengshouquan.profile"
|
||||
const RENZHENGSHOUQUAN_QRCODE = "web.team.renzhengshouquan.qrcode"
|
||||
const RENZHENGSHOUQUAN_RECENT = "web.team.renzhengshouquan.recent"
|
||||
const RENZHENGSHOUQUAN_SERVICE = "web.team.renzhengshouquan.service"
|
||||
const RENZHENGSHOUQUAN_SETTING = "web.team.renzhengshouquan.setting"
|
||||
const RENZHENGSHOUQUAN_SUPPORT = "web.team.renzhengshouquan.support"
|
||||
const YUEHAOXITONG_PORTAL = "web.team.yuehaoxitong.portal"
|
||||
const YUEHAOXITONG_ALLOW = "web.team.yuehaoxitong.allow"
|
||||
const YUEHAOXITONG_APPLY = "web.team.yuehaoxitong.apply"
|
||||
const YUEHAOXITONG_CALL = "web.team.yuehaoxitong.call"
|
||||
const YUEHAOXITONG_EVENT = "web.team.yuehaoxitong.event"
|
||||
const YUEHAOXITONG_HISTORY = "web.team.yuehaoxitong.history"
|
||||
const YUEHAOXITONG_MARKET = "web.team.yuehaoxitong.market"
|
||||
const YUEHAOXITONG_MEMBER = "web.team.yuehaoxitong.member"
|
||||
const YUEHAOXITONG_MESSAGE = "web.team.yuehaoxitong.message"
|
||||
const YUEHAOXITONG_NOTICE = "web.team.yuehaoxitong.notice"
|
||||
const YUEHAOXITONG_OPEN = "web.team.yuehaoxitong.open"
|
||||
const YUEHAOXITONG_PLAN = "web.team.yuehaoxitong.plan"
|
||||
const YUEHAOXITONG_QRCODE = "web.team.yuehaoxitong.qrcode"
|
||||
const YUEHAOXITONG_RECENT = "web.team.yuehaoxitong.recent"
|
||||
const YUEHAOXITONG_RECEPTION = "web.team.yuehaoxitong.reception"
|
||||
const YUEHAOXITONG_SCHEDULE = "web.team.yuehaoxitong.schedule"
|
||||
const YUEHAOXITONG_SERVICE = "web.team.yuehaoxitong.service"
|
||||
const YUEHAOXITONG_SETTING = "web.team.yuehaoxitong.setting"
|
||||
const YUEHAOXITONG_SUPPORT = "web.team.yuehaoxitong.support"
|
||||
const YUEHAOXITONG_TAKE = "web.team.yuehaoxitong.take"
|
||||
const YUEHAOXITONG_VOLUME = "web.team.yuehaoxitong.volume"
|
59
src/api/20240724-education.go
Normal file
59
src/api/20240724-education.go
Normal file
@ -0,0 +1,59 @@
|
||||
package api
|
||||
|
||||
const JIAOCAIZILIAO_PORTAL = "web.team.jiaocaiziliao.portal"
|
||||
const JIAOCAIZILIAO_ALLOW = "web.team.jiaocaiziliao.allow"
|
||||
const JIAOCAIZILIAO_APPLY = "web.team.jiaocaiziliao.apply"
|
||||
const JIAOCAIZILIAO_DOCUMENT = "web.team.jiaocaiziliao.document"
|
||||
const JIAOCAIZILIAO_EVENT = "web.team.jiaocaiziliao.event"
|
||||
const JIAOCAIZILIAO_MARKET = "web.team.jiaocaiziliao.market"
|
||||
const JIAOCAIZILIAO_MEMBER = "web.team.jiaocaiziliao.member"
|
||||
const JIAOCAIZILIAO_MESSAGE = "web.team.jiaocaiziliao.message"
|
||||
const JIAOCAIZILIAO_NOTICE = "web.team.jiaocaiziliao.notice"
|
||||
const JIAOCAIZILIAO_OFFICIAL = "web.team.jiaocaiziliao.official"
|
||||
const JIAOCAIZILIAO_QRCODE = "web.team.jiaocaiziliao.qrcode"
|
||||
const JIAOCAIZILIAO_RECENT = "web.team.jiaocaiziliao.recent"
|
||||
const JIAOCAIZILIAO_SERVICE = "web.team.jiaocaiziliao.service"
|
||||
const JIAOCAIZILIAO_SETTING = "web.team.jiaocaiziliao.setting"
|
||||
const JIAOCAIZILIAO_SUPPORT = "web.team.jiaocaiziliao.support"
|
||||
const JIAOWUXITONG_PORTAL = "web.team.jiaowuxitong.portal"
|
||||
const JIAOWUXITONG_ALLOW = "web.team.jiaowuxitong.allow"
|
||||
const JIAOWUXITONG_APPLY = "web.team.jiaowuxitong.apply"
|
||||
const JIAOWUXITONG_EVENT = "web.team.jiaowuxitong.event"
|
||||
const JIAOWUXITONG_HOMEWORK = "web.team.jiaowuxitong.homework"
|
||||
const JIAOWUXITONG_MARKET = "web.team.jiaowuxitong.market"
|
||||
const JIAOWUXITONG_MEMBER = "web.team.jiaowuxitong.member"
|
||||
const JIAOWUXITONG_MESSAGE = "web.team.jiaowuxitong.message"
|
||||
const JIAOWUXITONG_NOTICE = "web.team.jiaowuxitong.notice"
|
||||
const JIAOWUXITONG_QRCODE = "web.team.jiaowuxitong.qrcode"
|
||||
const JIAOWUXITONG_RECENT = "web.team.jiaowuxitong.recent"
|
||||
const JIAOWUXITONG_SERVICE = "web.team.jiaowuxitong.service"
|
||||
const JIAOWUXITONG_SETTING = "web.team.jiaowuxitong.setting"
|
||||
const JIAOWUXITONG_SUPPORT = "web.team.jiaowuxitong.support"
|
||||
const KAOSHIXITONG_PORTAL = "web.team.kaoshixitong.portal"
|
||||
const KAOSHIXITONG_ALLOW = "web.team.kaoshixitong.allow"
|
||||
const KAOSHIXITONG_APPLY = "web.team.kaoshixitong.apply"
|
||||
const KAOSHIXITONG_EVENT = "web.team.kaoshixitong.event"
|
||||
const KAOSHIXITONG_MARKET = "web.team.kaoshixitong.market"
|
||||
const KAOSHIXITONG_MEMBER = "web.team.kaoshixitong.member"
|
||||
const KAOSHIXITONG_MESSAGE = "web.team.kaoshixitong.message"
|
||||
const KAOSHIXITONG_NOTICE = "web.team.kaoshixitong.notice"
|
||||
const KAOSHIXITONG_QRCODE = "web.team.kaoshixitong.qrcode"
|
||||
const KAOSHIXITONG_QUESTION = "web.team.kaoshixitong.question"
|
||||
const KAOSHIXITONG_RECENT = "web.team.kaoshixitong.recent"
|
||||
const KAOSHIXITONG_SERVICE = "web.team.kaoshixitong.service"
|
||||
const KAOSHIXITONG_SETTING = "web.team.kaoshixitong.setting"
|
||||
const KAOSHIXITONG_SUPPORT = "web.team.kaoshixitong.support"
|
||||
const ZAIXIANKETANG_PORTAL = "web.team.zaixianketang.portal"
|
||||
const ZAIXIANKETANG_ALLOW = "web.team.zaixianketang.allow"
|
||||
const ZAIXIANKETANG_APPLY = "web.team.zaixianketang.apply"
|
||||
const ZAIXIANKETANG_EVENT = "web.team.zaixianketang.event"
|
||||
const ZAIXIANKETANG_LESSON = "web.team.zaixianketang.lesson"
|
||||
const ZAIXIANKETANG_MARKET = "web.team.zaixianketang.market"
|
||||
const ZAIXIANKETANG_MEMBER = "web.team.zaixianketang.member"
|
||||
const ZAIXIANKETANG_MESSAGE = "web.team.zaixianketang.message"
|
||||
const ZAIXIANKETANG_NOTICE = "web.team.zaixianketang.notice"
|
||||
const ZAIXIANKETANG_QRCODE = "web.team.zaixianketang.qrcode"
|
||||
const ZAIXIANKETANG_RECENT = "web.team.zaixianketang.recent"
|
||||
const ZAIXIANKETANG_SERVICE = "web.team.zaixianketang.service"
|
||||
const ZAIXIANKETANG_SETTING = "web.team.zaixianketang.setting"
|
||||
const ZAIXIANKETANG_SUPPORT = "web.team.zaixianketang.support"
|
74
src/api/20240724-enterprise.go
Normal file
74
src/api/20240724-enterprise.go
Normal file
@ -0,0 +1,74 @@
|
||||
package api
|
||||
|
||||
const GONGYINGLIAN_PORTAL = "web.team.gongyinglian.portal"
|
||||
const GONGYINGLIAN_ALLOW = "web.team.gongyinglian.allow"
|
||||
const GONGYINGLIAN_APPLY = "web.team.gongyinglian.apply"
|
||||
const GONGYINGLIAN_BRAND = "web.team.gongyinglian.brand"
|
||||
const GONGYINGLIAN_EVENT = "web.team.gongyinglian.event"
|
||||
const GONGYINGLIAN_EXPENSE = "web.team.gongyinglian.expense"
|
||||
const GONGYINGLIAN_EXPRESS = "web.team.gongyinglian.express"
|
||||
const GONGYINGLIAN_GOODS = "web.team.gongyinglian.goods"
|
||||
const GONGYINGLIAN_LOAN = "web.team.gongyinglian.loan"
|
||||
const GONGYINGLIAN_MARKET = "web.team.gongyinglian.market"
|
||||
const GONGYINGLIAN_MATERIAL = "web.team.gongyinglian.material"
|
||||
const GONGYINGLIAN_MEMBER = "web.team.gongyinglian.member"
|
||||
const GONGYINGLIAN_MESSAGE = "web.team.gongyinglian.message"
|
||||
const GONGYINGLIAN_NOTICE = "web.team.gongyinglian.notice"
|
||||
const GONGYINGLIAN_ORDER = "web.team.gongyinglian.order"
|
||||
const GONGYINGLIAN_PAYMENT = "web.team.gongyinglian.payment"
|
||||
const GONGYINGLIAN_PRODUCE = "web.team.gongyinglian.produce"
|
||||
const GONGYINGLIAN_PRODUCT = "web.team.gongyinglian.product"
|
||||
const GONGYINGLIAN_PURCHASE = "web.team.gongyinglian.purchase"
|
||||
const GONGYINGLIAN_QRCODE = "web.team.gongyinglian.qrcode"
|
||||
const GONGYINGLIAN_QUALITY = "web.team.gongyinglian.quality"
|
||||
const GONGYINGLIAN_RECENT = "web.team.gongyinglian.recent"
|
||||
const GONGYINGLIAN_REFUND = "web.team.gongyinglian.refund"
|
||||
const GONGYINGLIAN_RETURN = "web.team.gongyinglian.return"
|
||||
const GONGYINGLIAN_SELL = "web.team.gongyinglian.sell"
|
||||
const GONGYINGLIAN_SERVICE = "web.team.gongyinglian.service"
|
||||
const GONGYINGLIAN_SETTING = "web.team.gongyinglian.setting"
|
||||
const GONGYINGLIAN_SHOP = "web.team.gongyinglian.shop"
|
||||
const GONGYINGLIAN_SUPPORT = "web.team.gongyinglian.support"
|
||||
const GONGYINGLIAN_WAREHOUSE = "web.team.gongyinglian.warehouse"
|
||||
const GUANLIXITONG_PORTAL = "web.team.guanlixitong.portal"
|
||||
const GUANLIXITONG_ALLOW = "web.team.guanlixitong.allow"
|
||||
const GUANLIXITONG_APPLY = "web.team.guanlixitong.apply"
|
||||
const GUANLIXITONG_EVENT = "web.team.guanlixitong.event"
|
||||
const GUANLIXITONG_MARKET = "web.team.guanlixitong.market"
|
||||
const GUANLIXITONG_MEMBER = "web.team.guanlixitong.member"
|
||||
const GUANLIXITONG_MESSAGE = "web.team.guanlixitong.message"
|
||||
const GUANLIXITONG_NOTICE = "web.team.guanlixitong.notice"
|
||||
const GUANLIXITONG_QRCODE = "web.team.guanlixitong.qrcode"
|
||||
const GUANLIXITONG_RECENT = "web.team.guanlixitong.recent"
|
||||
const GUANLIXITONG_SERVICE = "web.team.guanlixitong.service"
|
||||
const GUANLIXITONG_SETTING = "web.team.guanlixitong.setting"
|
||||
const GUANLIXITONG_SUPPORT = "web.team.guanlixitong.support"
|
||||
const GUANLIXITONG_TARGET = "web.team.guanlixitong.target"
|
||||
const SHICHANGYINGXIAO_PORTAL = "web.team.shichangyingxiao.portal"
|
||||
const SHICHANGYINGXIAO_ALLOW = "web.team.shichangyingxiao.allow"
|
||||
const SHICHANGYINGXIAO_APPLY = "web.team.shichangyingxiao.apply"
|
||||
const SHICHANGYINGXIAO_EVENT = "web.team.shichangyingxiao.event"
|
||||
const SHICHANGYINGXIAO_MARKET = "web.team.shichangyingxiao.market"
|
||||
const SHICHANGYINGXIAO_MEMBER = "web.team.shichangyingxiao.member"
|
||||
const SHICHANGYINGXIAO_MESSAGE = "web.team.shichangyingxiao.message"
|
||||
const SHICHANGYINGXIAO_NOTICE = "web.team.shichangyingxiao.notice"
|
||||
const SHICHANGYINGXIAO_PROMOTION = "web.team.shichangyingxiao.promotion"
|
||||
const SHICHANGYINGXIAO_QRCODE = "web.team.shichangyingxiao.qrcode"
|
||||
const SHICHANGYINGXIAO_RECENT = "web.team.shichangyingxiao.recent"
|
||||
const SHICHANGYINGXIAO_SERVICE = "web.team.shichangyingxiao.service"
|
||||
const SHICHANGYINGXIAO_SETTING = "web.team.shichangyingxiao.setting"
|
||||
const SHICHANGYINGXIAO_SUPPORT = "web.team.shichangyingxiao.support"
|
||||
const ZIJINLIAN_PORTAL = "web.team.zijinlian.portal"
|
||||
const ZIJINLIAN_ALLOW = "web.team.zijinlian.allow"
|
||||
const ZIJINLIAN_APPLY = "web.team.zijinlian.apply"
|
||||
const ZIJINLIAN_EVENT = "web.team.zijinlian.event"
|
||||
const ZIJINLIAN_INVESTMENT = "web.team.zijinlian.investment"
|
||||
const ZIJINLIAN_MARKET = "web.team.zijinlian.market"
|
||||
const ZIJINLIAN_MEMBER = "web.team.zijinlian.member"
|
||||
const ZIJINLIAN_MESSAGE = "web.team.zijinlian.message"
|
||||
const ZIJINLIAN_NOTICE = "web.team.zijinlian.notice"
|
||||
const ZIJINLIAN_QRCODE = "web.team.zijinlian.qrcode"
|
||||
const ZIJINLIAN_RECENT = "web.team.zijinlian.recent"
|
||||
const ZIJINLIAN_SERVICE = "web.team.zijinlian.service"
|
||||
const ZIJINLIAN_SETTING = "web.team.zijinlian.setting"
|
||||
const ZIJINLIAN_SUPPORT = "web.team.zijinlian.support"
|
76
src/api/20240903-operation.go
Normal file
76
src/api/20240903-operation.go
Normal file
@ -0,0 +1,76 @@
|
||||
package api
|
||||
|
||||
const DASHBOARD_PORTAL = "web.team.dashboard.portal"
|
||||
const DASHBOARD_ALLOW = "web.team.dashboard.allow"
|
||||
const DASHBOARD_APPLY = "web.team.dashboard.apply"
|
||||
const DASHBOARD_DASHBOARD = "web.team.dashboard.dashboard"
|
||||
const DASHBOARD_EVENT = "web.team.dashboard.event"
|
||||
const DASHBOARD_MARKET = "web.team.dashboard.market"
|
||||
const DASHBOARD_MEMBER = "web.team.dashboard.member"
|
||||
const DASHBOARD_MESSAGE = "web.team.dashboard.message"
|
||||
const DASHBOARD_NOTICE = "web.team.dashboard.notice"
|
||||
const DASHBOARD_QRCODE = "web.team.dashboard.qrcode"
|
||||
const DASHBOARD_RECENT = "web.team.dashboard.recent"
|
||||
const DASHBOARD_SERVICE = "web.team.dashboard.service"
|
||||
const DASHBOARD_SETTING = "web.team.dashboard.setting"
|
||||
const DASHBOARD_SUMMARY = "web.team.dashboard.summary"
|
||||
const DASHBOARD_SUPPORT = "web.team.dashboard.support"
|
||||
const DEVELOPMENT_PORTAL = "web.team.development.portal"
|
||||
const DEVELOPMENT_ALLOW = "web.team.development.allow"
|
||||
const DEVELOPMENT_APPLY = "web.team.development.apply"
|
||||
const DEVELOPMENT_EVENT = "web.team.development.event"
|
||||
const DEVELOPMENT_MARKET = "web.team.development.market"
|
||||
const DEVELOPMENT_MEMBER = "web.team.development.member"
|
||||
const DEVELOPMENT_MESSAGE = "web.team.development.message"
|
||||
const DEVELOPMENT_NOTICE = "web.team.development.notice"
|
||||
const DEVELOPMENT_QRCODE = "web.team.development.qrcode"
|
||||
const DEVELOPMENT_RECENT = "web.team.development.recent"
|
||||
const DEVELOPMENT_SERVICE = "web.team.development.service"
|
||||
const DEVELOPMENT_SETTING = "web.team.development.setting"
|
||||
const DEVELOPMENT_SUPPORT = "web.team.development.support"
|
||||
const DEVELOPMENT_VERSION = "web.team.development.version"
|
||||
const OPERATION_PORTAL = "web.team.operation.portal"
|
||||
const OPERATION_ALLOW = "web.team.operation.allow"
|
||||
const OPERATION_APPLY = "web.team.operation.apply"
|
||||
const OPERATION_EVENT = "web.team.operation.event"
|
||||
const OPERATION_MARKET = "web.team.operation.market"
|
||||
const OPERATION_MEMBER = "web.team.operation.member"
|
||||
const OPERATION_MESSAGE = "web.team.operation.message"
|
||||
const OPERATION_NOTICE = "web.team.operation.notice"
|
||||
const OPERATION_QRCODE = "web.team.operation.qrcode"
|
||||
const OPERATION_RECENT = "web.team.operation.recent"
|
||||
const OPERATION_RELEASE = "web.team.operation.release"
|
||||
const OPERATION_SERVICE = "web.team.operation.service"
|
||||
const OPERATION_SETTING = "web.team.operation.setting"
|
||||
const OPERATION_SUPPORT = "web.team.operation.support"
|
||||
const PRODUCTION_PORTAL = "web.team.production.portal"
|
||||
const PRODUCTION_ALLOW = "web.team.production.allow"
|
||||
const PRODUCTION_APPLY = "web.team.production.apply"
|
||||
const PRODUCTION_CASE = "web.team.production.case"
|
||||
const PRODUCTION_EVENT = "web.team.production.event"
|
||||
const PRODUCTION_ISSUE = "web.team.production.issue"
|
||||
const PRODUCTION_MARKET = "web.team.production.market"
|
||||
const PRODUCTION_MEMBER = "web.team.production.member"
|
||||
const PRODUCTION_MESSAGE = "web.team.production.message"
|
||||
const PRODUCTION_NOTICE = "web.team.production.notice"
|
||||
const PRODUCTION_PLAN = "web.team.production.plan"
|
||||
const PRODUCTION_QRCODE = "web.team.production.qrcode"
|
||||
const PRODUCTION_RECENT = "web.team.production.recent"
|
||||
const PRODUCTION_SERVICE = "web.team.production.service"
|
||||
const PRODUCTION_SETTING = "web.team.production.setting"
|
||||
const PRODUCTION_SUPPORT = "web.team.production.support"
|
||||
const PRODUCTION_TASK = "web.team.production.task"
|
||||
const STORAGE_PORTAL = "web.team.storage.portal"
|
||||
const STORAGE_ALLOW = "web.team.storage.allow"
|
||||
const STORAGE_APPLY = "web.team.storage.apply"
|
||||
const STORAGE_EVENT = "web.team.storage.event"
|
||||
const STORAGE_FILE = "web.team.storage.file"
|
||||
const STORAGE_MARKET = "web.team.storage.market"
|
||||
const STORAGE_MEMBER = "web.team.storage.member"
|
||||
const STORAGE_MESSAGE = "web.team.storage.message"
|
||||
const STORAGE_NOTICE = "web.team.storage.notice"
|
||||
const STORAGE_QRCODE = "web.team.storage.qrcode"
|
||||
const STORAGE_RECENT = "web.team.storage.recent"
|
||||
const STORAGE_SERVICE = "web.team.storage.service"
|
||||
const STORAGE_SETTING = "web.team.storage.setting"
|
||||
const STORAGE_SUPPORT = "web.team.storage.support"
|
274
src/api/space.go
Normal file
274
src/api/space.go
Normal file
@ -0,0 +1,274 @@
|
||||
package api
|
||||
|
||||
var Trans = map[string]string{
|
||||
"web.team.gonganxitong.portal": "20240724-community",
|
||||
"web.team.gonganxitong.allow": "20240724-community",
|
||||
"web.team.gonganxitong.apply": "20240724-community",
|
||||
"web.team.gonganxitong.domain": "20240724-community",
|
||||
"web.team.gonganxitong.email": "20240724-community",
|
||||
"web.team.gonganxitong.event": "20240724-community",
|
||||
"web.team.gonganxitong.market": "20240724-community",
|
||||
"web.team.gonganxitong.member": "20240724-community",
|
||||
"web.team.gonganxitong.message": "20240724-community",
|
||||
"web.team.gonganxitong.notice": "20240724-community",
|
||||
"web.team.gonganxitong.qrcode": "20240724-community",
|
||||
"web.team.gonganxitong.recent": "20240724-community",
|
||||
"web.team.gonganxitong.service": "20240724-community",
|
||||
"web.team.gonganxitong.setting": "20240724-community",
|
||||
"web.team.gonganxitong.support": "20240724-community",
|
||||
"web.team.huodongzuzhi.activity": "20240724-community",
|
||||
"web.team.huodongzuzhi.portal": "20240724-community",
|
||||
"web.team.huodongzuzhi.allow": "20240724-community",
|
||||
"web.team.huodongzuzhi.apply": "20240724-community",
|
||||
"web.team.huodongzuzhi.event": "20240724-community",
|
||||
"web.team.huodongzuzhi.market": "20240724-community",
|
||||
"web.team.huodongzuzhi.member": "20240724-community",
|
||||
"web.team.huodongzuzhi.message": "20240724-community",
|
||||
"web.team.huodongzuzhi.notice": "20240724-community",
|
||||
"web.team.huodongzuzhi.qrcode": "20240724-community",
|
||||
"web.team.huodongzuzhi.recent": "20240724-community",
|
||||
"web.team.huodongzuzhi.service": "20240724-community",
|
||||
"web.team.huodongzuzhi.setting": "20240724-community",
|
||||
"web.team.huodongzuzhi.support": "20240724-community",
|
||||
"web.team.renzhengshouquan.portal": "20240724-community",
|
||||
"web.team.renzhengshouquan.allow": "20240724-community",
|
||||
"web.team.renzhengshouquan.apply": "20240724-community",
|
||||
"web.team.renzhengshouquan.auth": "20240724-community",
|
||||
"web.team.renzhengshouquan.cert": "20240724-community",
|
||||
"web.team.renzhengshouquan.domain": "20240724-community",
|
||||
"web.team.renzhengshouquan.event": "20240724-community",
|
||||
"web.team.renzhengshouquan.market": "20240724-community",
|
||||
"web.team.renzhengshouquan.member": "20240724-community",
|
||||
"web.team.renzhengshouquan.message": "20240724-community",
|
||||
"web.team.renzhengshouquan.notice": "20240724-community",
|
||||
"web.team.renzhengshouquan.profile": "20240724-community",
|
||||
"web.team.renzhengshouquan.qrcode": "20240724-community",
|
||||
"web.team.renzhengshouquan.recent": "20240724-community",
|
||||
"web.team.renzhengshouquan.service": "20240724-community",
|
||||
"web.team.renzhengshouquan.setting": "20240724-community",
|
||||
"web.team.renzhengshouquan.support": "20240724-community",
|
||||
"web.team.yuehaoxitong.portal": "20240724-community",
|
||||
"web.team.yuehaoxitong.allow": "20240724-community",
|
||||
"web.team.yuehaoxitong.apply": "20240724-community",
|
||||
"web.team.yuehaoxitong.call": "20240724-community",
|
||||
"web.team.yuehaoxitong.event": "20240724-community",
|
||||
"web.team.yuehaoxitong.history": "20240724-community",
|
||||
"web.team.yuehaoxitong.market": "20240724-community",
|
||||
"web.team.yuehaoxitong.member": "20240724-community",
|
||||
"web.team.yuehaoxitong.message": "20240724-community",
|
||||
"web.team.yuehaoxitong.notice": "20240724-community",
|
||||
"web.team.yuehaoxitong.open": "20240724-community",
|
||||
"web.team.yuehaoxitong.plan": "20240724-community",
|
||||
"web.team.yuehaoxitong.qrcode": "20240724-community",
|
||||
"web.team.yuehaoxitong.recent": "20240724-community",
|
||||
"web.team.yuehaoxitong.reception": "20240724-community",
|
||||
"web.team.yuehaoxitong.schedule": "20240724-community",
|
||||
"web.team.yuehaoxitong.service": "20240724-community",
|
||||
"web.team.yuehaoxitong.setting": "20240724-community",
|
||||
"web.team.yuehaoxitong.support": "20240724-community",
|
||||
"web.team.yuehaoxitong.take": "20240724-community",
|
||||
"web.team.yuehaoxitong.volume": "20240724-community",
|
||||
"web.team.jiaocaiziliao.portal": "20240724-education",
|
||||
"web.team.jiaocaiziliao.allow": "20240724-education",
|
||||
"web.team.jiaocaiziliao.apply": "20240724-education",
|
||||
"web.team.jiaocaiziliao.document": "20240724-education",
|
||||
"web.team.jiaocaiziliao.event": "20240724-education",
|
||||
"web.team.jiaocaiziliao.market": "20240724-education",
|
||||
"web.team.jiaocaiziliao.member": "20240724-education",
|
||||
"web.team.jiaocaiziliao.message": "20240724-education",
|
||||
"web.team.jiaocaiziliao.notice": "20240724-education",
|
||||
"web.team.jiaocaiziliao.official": "20240724-education",
|
||||
"web.team.jiaocaiziliao.qrcode": "20240724-education",
|
||||
"web.team.jiaocaiziliao.recent": "20240724-education",
|
||||
"web.team.jiaocaiziliao.service": "20240724-education",
|
||||
"web.team.jiaocaiziliao.setting": "20240724-education",
|
||||
"web.team.jiaocaiziliao.support": "20240724-education",
|
||||
"web.team.jiaowuxitong.portal": "20240724-education",
|
||||
"web.team.jiaowuxitong.allow": "20240724-education",
|
||||
"web.team.jiaowuxitong.apply": "20240724-education",
|
||||
"web.team.jiaowuxitong.event": "20240724-education",
|
||||
"web.team.jiaowuxitong.homework": "20240724-education",
|
||||
"web.team.jiaowuxitong.market": "20240724-education",
|
||||
"web.team.jiaowuxitong.member": "20240724-education",
|
||||
"web.team.jiaowuxitong.message": "20240724-education",
|
||||
"web.team.jiaowuxitong.notice": "20240724-education",
|
||||
"web.team.jiaowuxitong.qrcode": "20240724-education",
|
||||
"web.team.jiaowuxitong.recent": "20240724-education",
|
||||
"web.team.jiaowuxitong.service": "20240724-education",
|
||||
"web.team.jiaowuxitong.setting": "20240724-education",
|
||||
"web.team.jiaowuxitong.support": "20240724-education",
|
||||
"web.team.kaoshixitong.portal": "20240724-education",
|
||||
"web.team.kaoshixitong.allow": "20240724-education",
|
||||
"web.team.kaoshixitong.apply": "20240724-education",
|
||||
"web.team.kaoshixitong.event": "20240724-education",
|
||||
"web.team.kaoshixitong.market": "20240724-education",
|
||||
"web.team.kaoshixitong.member": "20240724-education",
|
||||
"web.team.kaoshixitong.message": "20240724-education",
|
||||
"web.team.kaoshixitong.notice": "20240724-education",
|
||||
"web.team.kaoshixitong.qrcode": "20240724-education",
|
||||
"web.team.kaoshixitong.question": "20240724-education",
|
||||
"web.team.kaoshixitong.recent": "20240724-education",
|
||||
"web.team.kaoshixitong.service": "20240724-education",
|
||||
"web.team.kaoshixitong.setting": "20240724-education",
|
||||
"web.team.kaoshixitong.support": "20240724-education",
|
||||
"web.team.zaixianketang.portal": "20240724-education",
|
||||
"web.team.zaixianketang.allow": "20240724-education",
|
||||
"web.team.zaixianketang.apply": "20240724-education",
|
||||
"web.team.zaixianketang.event": "20240724-education",
|
||||
"web.team.zaixianketang.lesson": "20240724-education",
|
||||
"web.team.zaixianketang.market": "20240724-education",
|
||||
"web.team.zaixianketang.member": "20240724-education",
|
||||
"web.team.zaixianketang.message": "20240724-education",
|
||||
"web.team.zaixianketang.notice": "20240724-education",
|
||||
"web.team.zaixianketang.qrcode": "20240724-education",
|
||||
"web.team.zaixianketang.recent": "20240724-education",
|
||||
"web.team.zaixianketang.service": "20240724-education",
|
||||
"web.team.zaixianketang.setting": "20240724-education",
|
||||
"web.team.zaixianketang.support": "20240724-education",
|
||||
"web.team.gongyinglian.portal": "20240724-enterprise",
|
||||
"web.team.gongyinglian.allow": "20240724-enterprise",
|
||||
"web.team.gongyinglian.apply": "20240724-enterprise",
|
||||
"web.team.gongyinglian.brand": "20240724-enterprise",
|
||||
"web.team.gongyinglian.event": "20240724-enterprise",
|
||||
"web.team.gongyinglian.expense": "20240724-enterprise",
|
||||
"web.team.gongyinglian.express": "20240724-enterprise",
|
||||
"web.team.gongyinglian.goods": "20240724-enterprise",
|
||||
"web.team.gongyinglian.loan": "20240724-enterprise",
|
||||
"web.team.gongyinglian.market": "20240724-enterprise",
|
||||
"web.team.gongyinglian.material": "20240724-enterprise",
|
||||
"web.team.gongyinglian.member": "20240724-enterprise",
|
||||
"web.team.gongyinglian.message": "20240724-enterprise",
|
||||
"web.team.gongyinglian.notice": "20240724-enterprise",
|
||||
"web.team.gongyinglian.order": "20240724-enterprise",
|
||||
"web.team.gongyinglian.payment": "20240724-enterprise",
|
||||
"web.team.gongyinglian.produce": "20240724-enterprise",
|
||||
"web.team.gongyinglian.product": "20240724-enterprise",
|
||||
"web.team.gongyinglian.purchase": "20240724-enterprise",
|
||||
"web.team.gongyinglian.qrcode": "20240724-enterprise",
|
||||
"web.team.gongyinglian.quality": "20240724-enterprise",
|
||||
"web.team.gongyinglian.recent": "20240724-enterprise",
|
||||
"web.team.gongyinglian.refund": "20240724-enterprise",
|
||||
"web.team.gongyinglian.return": "20240724-enterprise",
|
||||
"web.team.gongyinglian.sell": "20240724-enterprise",
|
||||
"web.team.gongyinglian.service": "20240724-enterprise",
|
||||
"web.team.gongyinglian.setting": "20240724-enterprise",
|
||||
"web.team.gongyinglian.shop": "20240724-enterprise",
|
||||
"web.team.gongyinglian.support": "20240724-enterprise",
|
||||
"web.team.gongyinglian.warehouse": "20240724-enterprise",
|
||||
"web.team.guanlixitong.portal": "20240724-enterprise",
|
||||
"web.team.guanlixitong.allow": "20240724-enterprise",
|
||||
"web.team.guanlixitong.apply": "20240724-enterprise",
|
||||
"web.team.guanlixitong.event": "20240724-enterprise",
|
||||
"web.team.guanlixitong.market": "20240724-enterprise",
|
||||
"web.team.guanlixitong.member": "20240724-enterprise",
|
||||
"web.team.guanlixitong.message": "20240724-enterprise",
|
||||
"web.team.guanlixitong.notice": "20240724-enterprise",
|
||||
"web.team.guanlixitong.qrcode": "20240724-enterprise",
|
||||
"web.team.guanlixitong.recent": "20240724-enterprise",
|
||||
"web.team.guanlixitong.service": "20240724-enterprise",
|
||||
"web.team.guanlixitong.setting": "20240724-enterprise",
|
||||
"web.team.guanlixitong.support": "20240724-enterprise",
|
||||
"web.team.guanlixitong.target": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.portal": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.allow": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.apply": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.event": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.market": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.member": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.message": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.notice": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.promotion": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.qrcode": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.recent": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.service": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.setting": "20240724-enterprise",
|
||||
"web.team.shichangyingxiao.support": "20240724-enterprise",
|
||||
"web.team.zijinlian.portal": "20240724-enterprise",
|
||||
"web.team.zijinlian.allow": "20240724-enterprise",
|
||||
"web.team.zijinlian.apply": "20240724-enterprise",
|
||||
"web.team.zijinlian.event": "20240724-enterprise",
|
||||
"web.team.zijinlian.investment": "20240724-enterprise",
|
||||
"web.team.zijinlian.market": "20240724-enterprise",
|
||||
"web.team.zijinlian.member": "20240724-enterprise",
|
||||
"web.team.zijinlian.message": "20240724-enterprise",
|
||||
"web.team.zijinlian.notice": "20240724-enterprise",
|
||||
"web.team.zijinlian.qrcode": "20240724-enterprise",
|
||||
"web.team.zijinlian.recent": "20240724-enterprise",
|
||||
"web.team.zijinlian.service": "20240724-enterprise",
|
||||
"web.team.zijinlian.setting": "20240724-enterprise",
|
||||
"web.team.zijinlian.support": "20240724-enterprise",
|
||||
"web.team.dashboard.portal": "20240903-operation",
|
||||
"web.team.dashboard.allow": "20240903-operation",
|
||||
"web.team.dashboard.apply": "20240903-operation",
|
||||
"web.team.dashboard.dashboard": "20240903-operation",
|
||||
"web.team.dashboard.event": "20240903-operation",
|
||||
"web.team.dashboard.market": "20240903-operation",
|
||||
"web.team.dashboard.member": "20240903-operation",
|
||||
"web.team.dashboard.message": "20240903-operation",
|
||||
"web.team.dashboard.notice": "20240903-operation",
|
||||
"web.team.dashboard.qrcode": "20240903-operation",
|
||||
"web.team.dashboard.recent": "20240903-operation",
|
||||
"web.team.dashboard.service": "20240903-operation",
|
||||
"web.team.dashboard.setting": "20240903-operation",
|
||||
"web.team.dashboard.summary": "20240903-operation",
|
||||
"web.team.dashboard.support": "20240903-operation",
|
||||
"web.team.development.portal": "20240903-operation",
|
||||
"web.team.development.allow": "20240903-operation",
|
||||
"web.team.development.apply": "20240903-operation",
|
||||
"web.team.development.event": "20240903-operation",
|
||||
"web.team.development.market": "20240903-operation",
|
||||
"web.team.development.member": "20240903-operation",
|
||||
"web.team.development.message": "20240903-operation",
|
||||
"web.team.development.notice": "20240903-operation",
|
||||
"web.team.development.qrcode": "20240903-operation",
|
||||
"web.team.development.recent": "20240903-operation",
|
||||
"web.team.development.service": "20240903-operation",
|
||||
"web.team.development.setting": "20240903-operation",
|
||||
"web.team.development.support": "20240903-operation",
|
||||
"web.team.development.version": "20240903-operation",
|
||||
"web.team.operation.portal": "20240903-operation",
|
||||
"web.team.operation.allow": "20240903-operation",
|
||||
"web.team.operation.apply": "20240903-operation",
|
||||
"web.team.operation.event": "20240903-operation",
|
||||
"web.team.operation.market": "20240903-operation",
|
||||
"web.team.operation.member": "20240903-operation",
|
||||
"web.team.operation.message": "20240903-operation",
|
||||
"web.team.operation.notice": "20240903-operation",
|
||||
"web.team.operation.qrcode": "20240903-operation",
|
||||
"web.team.operation.recent": "20240903-operation",
|
||||
"web.team.operation.release": "20240903-operation",
|
||||
"web.team.operation.service": "20240903-operation",
|
||||
"web.team.operation.setting": "20240903-operation",
|
||||
"web.team.operation.support": "20240903-operation",
|
||||
"web.team.production.portal": "20240903-operation",
|
||||
"web.team.production.allow": "20240903-operation",
|
||||
"web.team.production.apply": "20240903-operation",
|
||||
"web.team.production.case": "20240903-operation",
|
||||
"web.team.production.event": "20240903-operation",
|
||||
"web.team.production.issue": "20240903-operation",
|
||||
"web.team.production.market": "20240903-operation",
|
||||
"web.team.production.member": "20240903-operation",
|
||||
"web.team.production.message": "20240903-operation",
|
||||
"web.team.production.notice": "20240903-operation",
|
||||
"web.team.production.plan": "20240903-operation",
|
||||
"web.team.production.qrcode": "20240903-operation",
|
||||
"web.team.production.recent": "20240903-operation",
|
||||
"web.team.production.service": "20240903-operation",
|
||||
"web.team.production.setting": "20240903-operation",
|
||||
"web.team.production.support": "20240903-operation",
|
||||
"web.team.production.task": "20240903-operation",
|
||||
"web.team.storage.portal": "20240903-operation",
|
||||
"web.team.storage.allow": "20240903-operation",
|
||||
"web.team.storage.apply": "20240903-operation",
|
||||
"web.team.storage.event": "20240903-operation",
|
||||
"web.team.storage.file": "20240903-operation",
|
||||
"web.team.storage.market": "20240903-operation",
|
||||
"web.team.storage.member": "20240903-operation",
|
||||
"web.team.storage.message": "20240903-operation",
|
||||
"web.team.storage.notice": "20240903-operation",
|
||||
"web.team.storage.qrcode": "20240903-operation",
|
||||
"web.team.storage.recent": "20240903-operation",
|
||||
"web.team.storage.service": "20240903-operation",
|
||||
"web.team.storage.setting": "20240903-operation",
|
||||
"web.team.storage.support": "20240903-operation",
|
||||
}
|
@ -6,7 +6,11 @@ import (
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
)
|
||||
|
||||
type city struct{ Table }
|
||||
type city struct {
|
||||
Table
|
||||
list string `name:"list city_name auto" role:"void"`
|
||||
authCreate string `name:"authCreate city_name* city_info company_name*" role:"tech"`
|
||||
}
|
||||
|
||||
func (s city) FindOrCreateByName(m *ice.Message, arg ...string) {
|
||||
if msg := m.Cmd(s, s.Select, model.NAME, arg[1]); msg.Length() == 0 {
|
||||
@ -16,5 +20,17 @@ func (s city) FindOrCreateByName(m *ice.Message, arg ...string) {
|
||||
arg[0], arg[1] = model.CITY_UID, msg.Append(model.UID)
|
||||
}
|
||||
}
|
||||
|
||||
func (s city) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
s.Select(m).Action()
|
||||
} else if len(arg) == 1 {
|
||||
s.Select(m, model.NAME, arg[0]).Action()
|
||||
if m.Append(model.AUTH_UID) == "" && m.IsTech() {
|
||||
m.EchoInfoButton("请申请城市认证", s.AuthCreate)
|
||||
}
|
||||
}
|
||||
}
|
||||
func (s city) AuthCreate(m *ice.Message, arg ...string) {
|
||||
s.Table.AuthCreate(m, m.Option(model.CITY_NAME), m.Option(model.COMPANY_NAME), 1, m.Option(model.CITY_NAME), m.Option(model.CITY_INFO), model.NAME, m.Option(model.CITY_NAME))
|
||||
}
|
||||
func init() { ice.TeamCtxCmd(city{}) }
|
||||
|
@ -1,7 +1,12 @@
|
||||
package gonganxitong
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"shylinux.com/x/ice"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
@ -20,5 +25,39 @@ func (s command) Modify(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(arg), model.UID, uid)
|
||||
m.SetResult().Echo(uid)
|
||||
}
|
||||
func (s command) Autogen(m *ice.Message, arg ...string) {
|
||||
list := map[string][]string{}
|
||||
s.List(m).Table(func(value ice.Maps) {
|
||||
if strings.HasSuffix(value[model.INDEX], ".allow") {
|
||||
list[value[model.SPACE]] = append(list[value[model.SPACE]], strings.ReplaceAll(value[model.INDEX], ".allow", ".portal"))
|
||||
}
|
||||
list[value[model.SPACE]] = append(list[value[model.SPACE]], value[model.INDEX])
|
||||
})
|
||||
for p, v := range list {
|
||||
nfs.Create(m.Message, "src/api/"+p+".go", func(w io.Writer) {
|
||||
fmt.Fprintf(w, "package api\n\n")
|
||||
for _, v := range v {
|
||||
fmt.Fprintf(w, "const %s = \"%s\"\n", strings.ToUpper(strings.ReplaceAll(strings.TrimPrefix(v, "web.team."), ".", "_")), v)
|
||||
}
|
||||
})
|
||||
}
|
||||
nfs.Create(m.Message, "src/api/space.go", func(w io.Writer) {
|
||||
fmt.Fprintf(w, "package api\n\n")
|
||||
fmt.Fprintf(w, "var Trans = map[string]string{\n")
|
||||
for p, v := range list {
|
||||
for _, v := range v {
|
||||
fmt.Fprintf(w, "\"%s\": \"%s\",\n", v, p)
|
||||
}
|
||||
}
|
||||
fmt.Fprintf(w, "}\n")
|
||||
})
|
||||
}
|
||||
func (s command) List(m *ice.Message, arg ...string) *ice.Message {
|
||||
s.Tables(m, service{}).Fields(m,
|
||||
s.Key(s, model.UPDATED_AT), s.Key(s, model.INDEX), s.AS(model.NODENAME, model.SPACE),
|
||||
).Orders(m, "`space`,`index`").Limit(m, 300)
|
||||
s.Select(m).Action(s.Autogen)
|
||||
return m
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(command{}) }
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/web/html"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/api"
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
"shylinux.com/x/mysql-story/src/db"
|
||||
)
|
||||
@ -24,10 +25,8 @@ type UserPlacer interface {
|
||||
}
|
||||
type Placer interface {
|
||||
Inputs(m *ice.Message, arg ...string)
|
||||
Select(m *ice.Message, arg ...string) *ice.Message
|
||||
RewriteAppend(m *ice.Message, arg ...string) *ice.Message
|
||||
TransValue(m *ice.Message, key string, arg ...string) string
|
||||
TransRole(m *ice.Message, arg ...string) string
|
||||
}
|
||||
type Container interface {
|
||||
FindOrCreateByName(m *ice.Message, arg ...string)
|
||||
@ -46,7 +45,7 @@ type Table struct {
|
||||
|
||||
func (s Table) LoadTrans(m *ice.Message, arg ...string) {
|
||||
base := kit.FileLine(1, 100)
|
||||
if m.PrefixKey() != "web.team.gonganxitong.portal" {
|
||||
if m.PrefixKey() != api.GONGANXITONG_PORTAL {
|
||||
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(base), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
|
||||
}
|
||||
h := ctx.GetCmdFile(m.Message, m.PrefixKey())
|
||||
@ -61,7 +60,6 @@ func (s Table) Init(m *ice.Message, arg ...string) {
|
||||
}
|
||||
func (s Table) BeforeMigrate(m *ice.Message, arg ...string) {
|
||||
s.Table.BeforeMigrate(m, arg...)
|
||||
// kit.If(m.GetCommand().Icon, func() { Portal{}.Show(m) })
|
||||
}
|
||||
func (s Table) AfterMigrate(m *ice.Message, arg ...string) {
|
||||
kit.If(m.GetCommand().Icon, func() { Portal{}.Show(m) })
|
||||
@ -74,8 +72,7 @@ func (s Table) Inputs(m *ice.Message, arg ...string) {
|
||||
case model.PLACE_TYPE:
|
||||
s.InputsList(m, PlaceTypeList, arg...)
|
||||
case model.DOMAIN_UID:
|
||||
m.Cmdy(s.FindSpaceCmd(m, "web.team.gonganxitong.domain"))
|
||||
m.DisplayInputKeyNameIconTitle()
|
||||
m.Cmdy(s.FindSpaceCmd(m, api.GONGANXITONG_DOMAIN)).DisplayInputKeyNameIconTitle()
|
||||
default:
|
||||
s.Table.Inputs(m, arg...)
|
||||
}
|
||||
@ -151,7 +148,7 @@ func (s Table) List(m *ice.Message, arg ...string) *ice.Message {
|
||||
func (s Table) FieldsDefault(m *ice.Message, arg ...string) *ice.Message {
|
||||
if m.Option(mdb.SELECT) == "" {
|
||||
if fields := m.Config(mdb.FIELDS); fields != "" {
|
||||
s.Table.FieldsWithCreatedAT(m, m.CommandKey(), kit.TransArgs(kit.Split(fields, ",", ","))...)
|
||||
s.Table.FieldsWithCreatedAT(m, kit.Select(m.CommandKey(), m.Config(db.MODELS)), kit.TransArgs(kit.Split(fields, ",", ","))...)
|
||||
}
|
||||
}
|
||||
return m
|
||||
@ -177,7 +174,7 @@ func (s Table) SelectJoinCity(m *ice.Message, arg ...string) *ice.Message {
|
||||
}
|
||||
func (s Table) SelectJoinAuth(m *ice.Message) *ice.Message {
|
||||
defer m.Options(ice.MSG_USERROLE, aaa.VOID)
|
||||
return s.SelectJoin(m, s.FindSpaceCmd(m, web.TEAM_RENZHENGSHOUQUAN_AUTH), model.NAME, model.STATUS, model.DASHBOARD_UID)
|
||||
return s.SelectJoin(m, s.FindSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), model.NAME, model.TYPE, model.STATUS, model.DASHBOARD_UID)
|
||||
}
|
||||
func (s Table) RenameAppend(m *ice.Message, arg ...string) Table {
|
||||
m.RenameAppend(arg...)
|
||||
@ -191,6 +188,8 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
|
||||
switch key {
|
||||
case model.USER_PLACE_ROLE:
|
||||
value = UserPlaceRole(kit.Int(value)).String()
|
||||
case model.MEMBER_STATUS:
|
||||
value = MemberStatus(kit.Int(value)).String()
|
||||
case model.PLACE_TYPE:
|
||||
value = PlaceType(kit.Int(value)).String()
|
||||
case model.AUTH_STATUS:
|
||||
@ -213,6 +212,9 @@ func (s Table) Update(m *ice.Message, data ice.Map, arg ...string) {
|
||||
func (s Table) UpdateAuth(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(model.AUTH_UID, arg[0]), arg[1:]...)
|
||||
}
|
||||
func (s Table) UpdateField(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(arg[0], arg[1]), arg[2:]...)
|
||||
}
|
||||
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)
|
||||
if !m.WarnNotValid(msg.Length() == 0 || kit.Int(msg.Append(mdb.STATUS)) != int(from)) {
|
||||
@ -237,9 +239,6 @@ func (s Table) IsLeader(m *ice.Message) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
func (s Table) PlaceInfo(m *ice.Message) {
|
||||
m.Cmdy(s.Prefix(m, Portal{}), s.PlaceInfo)
|
||||
}
|
||||
func (s Table) UserPlaceRole(m *ice.Message) int {
|
||||
return kit.Int(m.Cmdy(s.Prefix(m, Portal{}), s.UserPlaceRole).Option(model.USER_ROLE))
|
||||
}
|
||||
@ -247,14 +246,10 @@ func (s Table) UserPlaceInit(m *ice.Message, arg ...string) {
|
||||
if m.Option(model.PLACE_INIT) == "" || m.PrefixKey() != m.Option(ice.MSG_INDEX) {
|
||||
return
|
||||
}
|
||||
m.Info("what %v %v %v", m.Length(), m.PrefixKey(), m.Option(ice.MSG_INDEX))
|
||||
m.Cmd(s.Prefix(m, Portal{}), "placeCmd", "addCount", model.INIT, 1, m.Option(model.PLACE_UID), m.Option(model.PLACE_INIT))
|
||||
}
|
||||
func (s Table) DashboardUpdate(m *ice.Message, arg ...string) {
|
||||
if m.IsErr() {
|
||||
return
|
||||
}
|
||||
m.Cmd(s.Prefix(m, Portal{}), s.DashboardUpdate)
|
||||
func (s Table) PlaceInfo(m *ice.Message) {
|
||||
m.Cmdy(s.Prefix(m, Portal{}), s.PlaceInfo)
|
||||
}
|
||||
func (s Table) RecordEvent(m *ice.Message, info string, arg ...string) {
|
||||
m.Cmd(s.Prefix(m, Portal{}), s.RecordEvent, info, arg)
|
||||
@ -273,16 +268,32 @@ func (s Table) RecordEventWithName(m *ice.Message, info string, arg ...string) {
|
||||
})
|
||||
s.RecordEvent(m, kit.JoinWord(info, kit.Cut(uid, 6), kit.Select(m.Option(model.TITLE), m.Option(model.NAME))), uid)
|
||||
}
|
||||
func (s Table) MemberList(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.Prefix(m, member{}), arg)
|
||||
}
|
||||
func (s Table) DashboardUpdate(m *ice.Message, arg ...string) {
|
||||
if m.IsErr() {
|
||||
return
|
||||
}
|
||||
m.Cmd(s.Prefix(m, Portal{}), s.DashboardUpdate)
|
||||
}
|
||||
func (s Table) MarketInsert(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.Prefix(m, Portal{}), s.MarketInsert, arg)
|
||||
}
|
||||
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 Table) ServiceList(m *ice.Message, arg ...string) *ice.Message {
|
||||
return m.Cmd(s.Prefix(m, service{}), arg)
|
||||
}
|
||||
func (s Table) CityList(m *ice.Message, arg ...string) *ice.Message {
|
||||
m.Cmdy(web.TEAM_GONGANXITONG_CITY, arg).RenameAppend(model.NAME, model.CITY_NAME)
|
||||
return m
|
||||
}
|
||||
func (s Table) AuthCreate(m *ice.Message, cityName, companyName string, authType int, authName, authInfo string, arg ...string) {
|
||||
m.Cmdy(api.RENZHENGSHOUQUAN_PORTAL, Portal{}.PlaceCreate, model.CITY_NAME, cityName, model.COMPANY_NAME, companyName,
|
||||
model.AUTH_TYPE, authType, model.AUTH_NAME, authName, model.AUTH_INFO, authInfo)
|
||||
s.Update(m, kit.Dict(m.OptionSimple(model.AUTH_UID)), arg...)
|
||||
}
|
||||
func (s Table) GetCommandUID(m *ice.Message) {
|
||||
m.Options(m.Cmd(s.Prefix(m, Portal{}), Portal{}.SelectCommand, m.PrefixKey()).AppendSimple(model.COMMAND_UID))
|
||||
m.Options(m.Cmd(s.Prefix(m, Portal{}), Portal{}.CommandSelect, m.PrefixKey()).AppendSimple(model.COMMAND_UID))
|
||||
}
|
||||
func (s Table) GetCommands(m *ice.Message, key string, arg ...string) []string {
|
||||
m.Option(model.UID, kit.Select(m.Option(model.UID), m.Result()))
|
||||
@ -294,8 +305,7 @@ func (s Table) SendMessage(m *ice.Message, from_user_uid, to_user_uid string, ar
|
||||
}
|
||||
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_user_uid), model.TO_USER_UID, kit.Select(m.Option(model.USER_UID), to_user_uid),
|
||||
model.DETAIL_NAME, kit.Select(m.Option(model.NAME), m.Option(model.TITLE)),
|
||||
s.GetCommands(m, model.COMMAND_UID, arg...),
|
||||
model.DETAIL_NAME, kit.Select(m.Option(model.NAME), m.Option(model.TITLE)), s.GetCommands(m, model.COMMAND_UID, arg...),
|
||||
)
|
||||
}
|
||||
func (s Table) DoneMessage(m *ice.Message, arg ...string) {
|
||||
@ -393,19 +403,8 @@ func (s Table) SpaceCmd(m *ice.Message, space string, arg ...ice.Any) *ice.Messa
|
||||
}
|
||||
}
|
||||
func (s Table) FindSpaceCmd(m *ice.Message, cmd ice.Any) ice.Any {
|
||||
route := map[string]string{
|
||||
web.CODE_MYSQL_CLIENT: "20240724-community",
|
||||
web.TEAM_GONGANXITONG_USER: "20240724-community",
|
||||
web.TEAM_GONGANXITONG_DOMAIN: "20240724-community",
|
||||
web.TEAM_RENZHENGSHOUQUAN_PORTAL: "20240724-community",
|
||||
web.TEAM_RENZHENGSHOUQUAN_AUTH: "20240724-community",
|
||||
web.TEAM_DASHBOARD_PORTAL: "20240903-operation",
|
||||
web.TEAM_DASHBOARD_SUMMARY: "20240903-operation",
|
||||
web.TEAM_STORAGE_PORTAL: "20240903-operation",
|
||||
web.TEAM_STORAGE_FILE: "20240903-operation",
|
||||
}
|
||||
cmds := ice.GetTypeKey(cmd)
|
||||
if space, ok := route[cmds]; ok && space != ice.Info.NodeName {
|
||||
if space, ok := api.Trans[cmds]; ok && space != ice.Info.NodeName {
|
||||
m.Options(ice.MSG_USERROLE, aaa.TECH)
|
||||
return []string{web.SPACE, kit.Keys(ice.OPS, space), cmds}
|
||||
}
|
||||
@ -435,14 +434,15 @@ func (s Portal) getTable() Table { return s.Table }
|
||||
func PortalCmd(portal ice.Any) {
|
||||
h := kit.FileLine(-1, 100)
|
||||
p := kit.Keys("web.team", kit.ModPath(-1))
|
||||
table := portal.(interface{ getTable() Table }).getTable()
|
||||
cmd := func(name string, data ice.Any) {
|
||||
_, cmd := ice.Cmd(kit.Keys(p, name), data)
|
||||
cmd.RawHand = path.Join(path.Dir(h), name+".go")
|
||||
cmd.Actions[ice.CTX_INIT].Hand = icebergs.MergeHand(func(m *icebergs.Message, arg ...string) {
|
||||
mdb.Config(m, db.DOMAIN, kit.PathName(1))
|
||||
m.Design(mdb.LIST, "", kit.JoinWord(table.Keys(table.Place, model.UID), model.UID, ice.AUTO))
|
||||
}, cmd.Actions[ice.CTX_INIT].Hand)
|
||||
}
|
||||
table := portal.(interface{ getTable() Table }).getTable()
|
||||
cmd("portal", portal)
|
||||
cmd("search", search{Tables: Tables{Table: table}})
|
||||
cmd("qrcode", qrcode{Tables: Tables{Table: table}})
|
||||
@ -450,6 +450,7 @@ func PortalCmd(portal ice.Any) {
|
||||
cmd("apply", apply{Table: table})
|
||||
cmd("allow", allow{Table: table})
|
||||
cmd("notice", notice{Table: table})
|
||||
cmd("setting", setting{Table: table})
|
||||
cmd("member", member{Tables: Tables{Table: table}})
|
||||
cmd("market", market{Table: table})
|
||||
cmd("message", message{Table: table})
|
||||
|
@ -10,15 +10,14 @@ import (
|
||||
|
||||
type event struct {
|
||||
Table
|
||||
user user
|
||||
command command
|
||||
service service
|
||||
order string `data:"504"`
|
||||
role string `data:"creator"`
|
||||
user user
|
||||
order string `data:"504"`
|
||||
role string `data:"creator"`
|
||||
}
|
||||
|
||||
func (s event) List(m *ice.Message, arg ...string) {
|
||||
s.Tables(m, s.user, s.command, s.service).FieldsWithCreatedAT(m, s, model.INFO,
|
||||
s.Tables(m, s.user).FieldsWithCreatedAT(m, s,
|
||||
s.Key(s, model.INFO),
|
||||
s.Key(s, model.CITY_NAME), s.Key(s, model.STREET_NAME), s.Key(s, model.PLACE_NAME),
|
||||
model.USER_NAME, model.USER_AVATAR,
|
||||
)
|
||||
|
6
src/gonganxitong/member.css
Normal file
6
src/gonganxitong/member.css
Normal file
@ -0,0 +1,6 @@
|
||||
$output>div.item.myself div.title span {
|
||||
font-weight:bold;
|
||||
}
|
||||
$output>div.item.disabled div.title span {
|
||||
// color:var(--disable-fg-color);
|
||||
}
|
@ -2,6 +2,7 @@ package gonganxitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
)
|
||||
@ -12,8 +13,27 @@ type member struct {
|
||||
order string `data:"101"`
|
||||
}
|
||||
|
||||
func (s member) Remove(m *ice.Message, arg ...string) {
|
||||
if s.IsLeader(m) {
|
||||
m.Cmdy(s.UserPlace, s.Delete, s.Option(m))
|
||||
}
|
||||
}
|
||||
func (s member) Enable(m *ice.Message, arg ...string) {
|
||||
if s.IsLeader(m) {
|
||||
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberNormal, s.Option(m))
|
||||
}
|
||||
}
|
||||
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) Option(m *ice.Message, arg ...string) []string {
|
||||
return m.OptionSimple(s.Keys(s.Place, model.UID), model.UID)
|
||||
}
|
||||
func (s member) List(m *ice.Message, arg ...string) {
|
||||
s.FieldsWithCreatedAT(m, s.UserPlace, model.USER_UID, s.Keys(s.UserPlace, model.ROLE))
|
||||
user_uid, isLeader := m.Option(model.USER_UID), s.IsLeader(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))
|
||||
if len(arg) == 1 {
|
||||
m.Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0]).Action()
|
||||
} else if len(arg) == 2 {
|
||||
@ -21,13 +41,47 @@ func (s member) List(m *ice.Message, arg ...string) {
|
||||
} else {
|
||||
return
|
||||
}
|
||||
s.SelectJoinUser(m, model.NAME, model.AVATAR, model.AUTH_UID)
|
||||
s.SelectJoinUser(m, model.NAME, model.INFO, model.AVATAR, model.AUTH_UID)
|
||||
s.SelectJoinAuth(m)
|
||||
s.Display(m, "")
|
||||
m.Table(func(value ice.Maps) {
|
||||
if user_uid == value[model.USER_UID] {
|
||||
m.Push("who", "myself")
|
||||
} else {
|
||||
m.Push("who", "")
|
||||
}
|
||||
if isLeader {
|
||||
if user_uid == value[model.USER_UID] {
|
||||
m.PushButton()
|
||||
} else {
|
||||
if MemberStatus(kit.Int(value[model.MEMBER_STATUS])) == MemberNormal {
|
||||
m.PushButton(s.Disable)
|
||||
} else {
|
||||
m.PushButton(s.Enable, s.Remove)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
m.PushButton()
|
||||
}
|
||||
})
|
||||
s.Display(m, "").DisplayCSS("")
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(member{Tables: newTables()}) }
|
||||
|
||||
type MemberStatus int
|
||||
|
||||
const (
|
||||
MemberNormal MemberStatus = iota
|
||||
MemberDisabled
|
||||
)
|
||||
|
||||
var MemberStatusList = map[MemberStatus]string{
|
||||
MemberNormal: "normal",
|
||||
MemberDisabled: "disabled",
|
||||
}
|
||||
|
||||
func (s MemberStatus) String() string { return MemberStatusList[s] }
|
||||
|
||||
type AuthStatus int
|
||||
|
||||
const (
|
||||
|
@ -1,8 +1,20 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { var USER_PLACE_ROLE = msg.Option("_user_place_role")
|
||||
can.onimport.myView(can, msg, function(value) { return [
|
||||
{view: html.TITLE, list: [value.user_name, value.auth_name, can.onimport.authView(can, value), can.onimport.textView(can, value, USER_PLACE_ROLE)]},
|
||||
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value)]},
|
||||
] })
|
||||
can.onimport.myView(can, msg, function(value) { value._style = [value.who, value.member_status]
|
||||
return [
|
||||
{view: html.TITLE, list: [
|
||||
value.user_name, value.auth_name,
|
||||
can.onimport.authView(can, value), can.onimport.textView(can, value, USER_PLACE_ROLE),
|
||||
can.onimport.titleAction(can, value),
|
||||
]},
|
||||
{view: html.STATUS, list: [
|
||||
value.uid.slice(0, 6), can.onimport.timeView(can, value),
|
||||
value.member_status != "normal" && can.onimport.textView(can, value, "member_status"),
|
||||
]},
|
||||
{view: html.STATUS, list: [
|
||||
value.user_info,
|
||||
]},
|
||||
]
|
||||
})
|
||||
},
|
||||
})
|
@ -3,96 +3,109 @@ package model
|
||||
import "shylinux.com/x/mysql-story/src/db"
|
||||
|
||||
const (
|
||||
ID = "id"
|
||||
UID = "uid"
|
||||
NAME = "name"
|
||||
INFO = "info"
|
||||
TYPE = "type"
|
||||
ROLE = "role"
|
||||
STATUS = "status"
|
||||
LEVEL = "level"
|
||||
SCORE = "score"
|
||||
TITLE = "title"
|
||||
CONTENT = "content"
|
||||
CREATOR = "creator"
|
||||
OPERATOR = "operator"
|
||||
CREATED_AT = "created_at"
|
||||
UPDATED_AT = "updated_at"
|
||||
DELETED_AT = "deleted_at"
|
||||
USER_UID = "user_uid"
|
||||
USER_ROLE = "user_role"
|
||||
USER_NAME = "user_name"
|
||||
USER_AVATAR = "user_avatar"
|
||||
USER_PLACE_ROLE = "user_place_role"
|
||||
PLACE_UID = "place_uid"
|
||||
PLACE_NAME = "place_name"
|
||||
PLACE_TYPE = "place_type"
|
||||
PLACE_INIT = "place_init"
|
||||
PLACE_ADDRESS = "place_address"
|
||||
STREET_UID = "street_uid"
|
||||
STREET_NAME = "street_name"
|
||||
SCHOOL_NAME = "school_name"
|
||||
COMPANY_NAME = "company_name"
|
||||
CITY_UID = "city_uid"
|
||||
CITY_NAME = "city_name"
|
||||
AUTH_UID = "auth_uid"
|
||||
AUTH_NAME = "auth_name"
|
||||
AUTH_TYPE = "auth_type"
|
||||
AUTH_STATUS = "auth_status"
|
||||
DASHBOARD_UID = "dashboard_uid"
|
||||
DASHBOARD_NAME = "dashboard_name"
|
||||
DASHBOARD_TYPE = "dashboard_type"
|
||||
STORAGE_UID = "storage_uid"
|
||||
STORAGE_NAME = "storage_name"
|
||||
STORAGE_TYPE = "storage_type"
|
||||
QRCODE_TYPE = "qrcode_type"
|
||||
APPLY_UID = "apply_uid"
|
||||
APPLY_STATUS = "apply_status"
|
||||
ALLOW_UID = "allow_uid"
|
||||
ALLOW_STATUS = "allow_status"
|
||||
EVENT_UID = "event_uid"
|
||||
MARKET_UID = "market_uid"
|
||||
DOMAIN_UID = "domain_uid"
|
||||
DOMAIN_NAME = "domain_name"
|
||||
PORTAL_NAME = "portal_name"
|
||||
DETAIL_NAME = "detail_name"
|
||||
COMMAND_UID = "command_uid"
|
||||
COMMAND_ICON = "command_icon"
|
||||
COMMAND_NAME = "command_name"
|
||||
MESSAGE_UID = "message_uid"
|
||||
MESSAGE_STATUS = "message_status"
|
||||
SERVICE_UID = "service_uid"
|
||||
SERVICE_ICON = "service_icon"
|
||||
SERVICE_NAME = "service_name"
|
||||
SERVICE_TYPE = "service_type"
|
||||
SERVICE_STATUS = "service_status"
|
||||
THUMB_COUNT = "thumb_count"
|
||||
FAVOR_COUNT = "favor_count"
|
||||
COMMENT_COUNT = "comment_count"
|
||||
SHARE_COUNT = "share_count"
|
||||
THUMB_STATUS = "thumb_status"
|
||||
FAVOR_STATUS = "favor_status"
|
||||
CLIENT_UID = "client_uid"
|
||||
CLIENT_NAME = "client_name"
|
||||
CLIENT_TYPE = "client_type"
|
||||
FROM_UID = "from_uid"
|
||||
FROM_USER_UID = "from_user_uid"
|
||||
TO_USER_UID = "to_user_uid"
|
||||
BEGIN_TIME = "begin_time"
|
||||
END_TIME = "end_time"
|
||||
OPEN_ID = "open_id"
|
||||
EMAIL = "email"
|
||||
AVATAR = "avatar"
|
||||
ADDRESS = "address"
|
||||
NODE_NAME = "node_name"
|
||||
NODENAME = "nodename"
|
||||
SPACE = "space"
|
||||
OPERATE = "operate"
|
||||
INDEX = "index"
|
||||
QUERY = "query"
|
||||
ARGS = "args"
|
||||
INIT = "init"
|
||||
UNIT = "unit"
|
||||
ID = "id"
|
||||
UID = "uid"
|
||||
NAME = "name"
|
||||
INFO = "info"
|
||||
TYPE = "type"
|
||||
ROLE = "role"
|
||||
STATUS = "status"
|
||||
LEVEL = "level"
|
||||
SCORE = "score"
|
||||
TITLE = "title"
|
||||
CONTENT = "content"
|
||||
CREATOR = "creator"
|
||||
OPERATOR = "operator"
|
||||
CREATED_AT = "created_at"
|
||||
UPDATED_AT = "updated_at"
|
||||
DELETED_AT = "deleted_at"
|
||||
USER_UID = "user_uid"
|
||||
USER_ROLE = "user_role"
|
||||
USER_NAME = "user_name"
|
||||
USER_INFO = "user_info"
|
||||
USER_AVATAR = "user_avatar"
|
||||
USER_BACKGROUND = "user_background"
|
||||
USER_PLACE_ROLE = "user_place_role"
|
||||
MEMBER_UID = "member_uid"
|
||||
MEMBER_STATUS = "member_status"
|
||||
PLACE_UID = "place_uid"
|
||||
PLACE_NAME = "place_name"
|
||||
PLACE_TYPE = "place_type"
|
||||
PLACE_INIT = "place_init"
|
||||
PLACE_ADDRESS = "place_address"
|
||||
STREET_UID = "street_uid"
|
||||
STREET_NAME = "street_name"
|
||||
STREET_INFO = "street_info"
|
||||
STREET_AVATAR = "street_avatar"
|
||||
STREET_BACKGROUND = "street_background"
|
||||
SCHOOL_NAME = "school_name"
|
||||
COMPANY_NAME = "company_name"
|
||||
CITY_UID = "city_uid"
|
||||
CITY_NAME = "city_name"
|
||||
CITY_INFO = "city_info"
|
||||
CITY_AVATAR = "city_avatar"
|
||||
CITY_BACKGROUND = "city_background"
|
||||
AUTH_UID = "auth_uid"
|
||||
AUTH_NAME = "auth_name"
|
||||
AUTH_INFO = "auth_info"
|
||||
AUTH_TYPE = "auth_type"
|
||||
AUTH_STATUS = "auth_status"
|
||||
DASHBOARD_UID = "dashboard_uid"
|
||||
DASHBOARD_NAME = "dashboard_name"
|
||||
DASHBOARD_TYPE = "dashboard_type"
|
||||
STORAGE_UID = "storage_uid"
|
||||
STORAGE_NAME = "storage_name"
|
||||
STORAGE_TYPE = "storage_type"
|
||||
QRCODE_TYPE = "qrcode_type"
|
||||
APPLY_UID = "apply_uid"
|
||||
APPLY_STATUS = "apply_status"
|
||||
ALLOW_UID = "allow_uid"
|
||||
ALLOW_STATUS = "allow_status"
|
||||
EVENT_UID = "event_uid"
|
||||
MARKET_UID = "market_uid"
|
||||
DOMAIN_UID = "domain_uid"
|
||||
DOMAIN_NAME = "domain_name"
|
||||
PORTAL_NAME = "portal_name"
|
||||
DETAIL_NAME = "detail_name"
|
||||
COMMAND_UID = "command_uid"
|
||||
COMMAND_ICON = "command_icon"
|
||||
COMMAND_NAME = "command_name"
|
||||
MESSAGE_UID = "message_uid"
|
||||
MESSAGE_STATUS = "message_status"
|
||||
SERVICE_UID = "service_uid"
|
||||
SERVICE_ICON = "service_icon"
|
||||
SERVICE_NAME = "service_name"
|
||||
SERVICE_TYPE = "service_type"
|
||||
SERVICE_STATUS = "service_status"
|
||||
THUMB_COUNT = "thumb_count"
|
||||
FAVOR_COUNT = "favor_count"
|
||||
COMMENT_COUNT = "comment_count"
|
||||
SHARE_COUNT = "share_count"
|
||||
THUMB_STATUS = "thumb_status"
|
||||
FAVOR_STATUS = "favor_status"
|
||||
CLIENT_UID = "client_uid"
|
||||
CLIENT_NAME = "client_name"
|
||||
CLIENT_TYPE = "client_type"
|
||||
FROM_UID = "from_uid"
|
||||
FROM_USER_UID = "from_user_uid"
|
||||
TO_USER_UID = "to_user_uid"
|
||||
BEGIN_TIME = "begin_time"
|
||||
END_TIME = "end_time"
|
||||
OPEN_ID = "open_id"
|
||||
EMAIL = "email"
|
||||
AVATAR = "avatar"
|
||||
BACKGROUND = "background"
|
||||
ADDRESS = "address"
|
||||
NODE_NAME = "node_name"
|
||||
NODENAME = "nodename"
|
||||
SPACE = "space"
|
||||
OPERATE = "operate"
|
||||
INDEX = "index"
|
||||
QUERY = "query"
|
||||
VALUE = "value"
|
||||
ARGS = "args"
|
||||
INIT = "init"
|
||||
UNIT = "unit"
|
||||
)
|
||||
|
||||
type Sess struct {
|
||||
@ -103,10 +116,12 @@ type Sess struct {
|
||||
}
|
||||
type User struct {
|
||||
db.ModelWithAuth
|
||||
OpenID string `gorm:"type:char(32);index"`
|
||||
Avatar string `gorm:"type:varchar(255)"`
|
||||
Name string `gorm:"type:varchar(32)"`
|
||||
Email string `gorm:"type:varchar(64)"`
|
||||
OpenID string `gorm:"type:char(32);index"`
|
||||
Email string `gorm:"type:varchar(64)"`
|
||||
Name string `gorm:"type:varchar(32)"`
|
||||
Info string `gorm:"type:varchar(255)"`
|
||||
Avatar string `gorm:"type:varchar(255)"`
|
||||
Background string `gorm:"type:varchar(255)"`
|
||||
}
|
||||
type UserPlace struct {
|
||||
db.ModelUserPlace
|
||||
@ -124,7 +139,10 @@ type Street struct {
|
||||
}
|
||||
type City struct {
|
||||
db.ModelWithAuth
|
||||
Name string `gorm:"type:varchar(64);index"`
|
||||
Name string `gorm:"type:varchar(64);index"`
|
||||
Info string `gorm:"type:varchar(255)"`
|
||||
Avatar string `gorm:"type:varchar(255)"`
|
||||
Background string `gorm:"type:varchar(255)"`
|
||||
}
|
||||
|
||||
type Apply struct {
|
||||
@ -155,6 +173,13 @@ type Notice struct {
|
||||
PlaceUID string `gorm:"type:char(32);index"`
|
||||
UserUID string `gorm:"type:char(32)"`
|
||||
}
|
||||
type Setting struct {
|
||||
db.ModelWithUID
|
||||
PlaceUID string `gorm:"type:char(32);index"`
|
||||
UserUID string `gorm:"type:char(32);index"`
|
||||
Name string `gorm:"type:varchar(64)"`
|
||||
Value string `gorm:"type:varchar(255)"`
|
||||
}
|
||||
type Domain struct {
|
||||
db.ModelNameInfo
|
||||
}
|
||||
@ -228,6 +253,7 @@ type Service struct {
|
||||
}
|
||||
type Support struct {
|
||||
db.ModelContent
|
||||
PlaceUID string `gorm:"type:char(32);index"`
|
||||
FromUserUID string `gorm:"type:char(32);index"`
|
||||
ToUserUID string `gorm:"type:char(32);index"`
|
||||
}
|
||||
@ -235,7 +261,7 @@ type Support struct {
|
||||
func init() {
|
||||
db.CmdModels("",
|
||||
&Sess{}, &User{}, &UserPlace{}, &Place{}, &Street{}, &City{},
|
||||
&Apply{}, &Allow{}, &Event{}, &Notice{},
|
||||
&Apply{}, &Allow{}, &Event{}, &Notice{}, &Setting{},
|
||||
&Domain{}, &Market{}, &Thumb{}, &Comment{}, &Favor{},
|
||||
&Message{}, &Recent{}, &Command{}, &Service{}, &Support{},
|
||||
)
|
||||
|
@ -11,6 +11,10 @@ $action div.item.button input:hover { background-color:var(--hover-bg-color); }
|
||||
$action div.item.button span { display:none; }
|
||||
$action div.item.button i { display:none; }
|
||||
$output { background-color:var(--plugin-bg-color); }
|
||||
$output div.head { margin-bottom:20px; }
|
||||
$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 div.title div.item.button i { display:none; }
|
||||
$output>div.header { border-radius:100px; background-color:var(--notice-bg-color); height:300px; width:100%; position:absolute; top:-100px; left:0; }
|
||||
$output>div.footer { border-radius:100px; background-color:var(--notice-bg-color); height:300px; width:100%; position:absolute; bottom:-100px; left:0; }
|
||||
$output>div>div.list { box-shadow:var(--box-shadow); border-radius:10px; background-color:var(--output-bg-color); padding:10px; margin:10px; }
|
||||
@ -44,7 +48,7 @@ $output div.item.card div.title { width:100%; display:flex; align-items:center;
|
||||
$output div.item.card div.title span.auth { font-size:14px; }
|
||||
$output div.item.card div.title span.time { position:absolute; right:0; font-size:12px; color:gray; }
|
||||
$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; }
|
||||
$output div.item.card img { border-radius:5px; padding:0; margin:0; margin-right:10px; height:48px; width:48px; min-width:48px; }
|
||||
$output div.item.card.sticky>div.output { background-color:var(--plugin-bg-color); color:var(--notice-bg-color); }
|
||||
$output table.content { background-color:var(--output-bg-color); }
|
||||
$output table.content td.action input.icons { display:unset; }
|
||||
@ -88,7 +92,7 @@ $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][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.item.card>div.output { padding:10px; }
|
||||
$output>fieldset.story>div.output div.item.card>div.output { padding:10px; width:100%; }
|
||||
$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.message div.tabs span.select { border-top:var(--box-border); }
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
"shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/api"
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
"shylinux.com/x/mysql-story/src/db"
|
||||
)
|
||||
@ -26,13 +27,10 @@ type Portal struct {
|
||||
short string `data:"index"`
|
||||
field string `data:"time,icons,name,index,order,enable,init,type,role,view,command_uid"`
|
||||
create string `name:"create index name icons"`
|
||||
command string `name:"command" 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-square-dotted" role:"void"`
|
||||
placeRemove string `name:"placeRemove" role:"void"`
|
||||
placeAuth string `name:"placeAuth" role:"void"`
|
||||
placeSearch string `name:"placeSearch" icon:"bi bi-search" role:"void"`
|
||||
scanQRCode string `name:"scanQRCode type text" icon:"bi bi-qr-code-scan" role:"void"`
|
||||
}
|
||||
|
||||
func (s Portal) Init(m *ice.Message, arg ...string) {
|
||||
@ -63,6 +61,8 @@ func (s Portal) Inputs(m *ice.Message, arg ...string) {
|
||||
}
|
||||
func (s Portal) Run(m *ice.Message, arg ...string) {
|
||||
s.DisplayBase(m, "common.js")
|
||||
m.OptionDefault(model.SERVICE_UID, ServiceUID(m))
|
||||
m.OptionDefault(model.COMMAND_UID, s.Hash.List(m.Spawn(), arg[0]).Append(model.COMMAND_UID))
|
||||
m.Search(arg[0], func(key string, cmd *ice.Command) {
|
||||
sub, role := "", cmd.Role
|
||||
if len(arg) > 1 && arg[1] == ctx.ACTION {
|
||||
@ -73,7 +73,6 @@ func (s Portal) Run(m *ice.Message, arg ...string) {
|
||||
if action, ok := cmd.Actions[arg[1]]; ok {
|
||||
sub, role = arg[1], action.Role
|
||||
} else {
|
||||
m.OptionDefault(s.Keys(s.Place, model.UID), arg[1])
|
||||
m.Option(s.Keys(s.Place, model.UID), arg[1])
|
||||
}
|
||||
}
|
||||
@ -90,9 +89,6 @@ func (s Portal) Run(m *ice.Message, arg ...string) {
|
||||
}
|
||||
})
|
||||
}
|
||||
func (s Portal) Command(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(ctx.COMMAND, arg[0]).Push(model.COMMAND_UID, s.Hash.List(m.Spawn(), arg[0]).Append(model.COMMAND_UID))
|
||||
}
|
||||
func (s Portal) List(m *ice.Message, arg ...string) {
|
||||
if m.Option(mdb.VIEW) == mdb.TABLE {
|
||||
s.Hash.List(m, arg...).PushAction(mdb.DETAIL, s.Hash.Remove).SortInt(mdb.ORDER)
|
||||
@ -101,16 +97,14 @@ func (s Portal) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
USER_PLACE_ROLE := s.Keys(s.UserPlace, model.ROLE)
|
||||
m.Cmdy(m.PrefixKey(), s.PlaceList, m.Option(model.USER_UID)).Table(func(value ice.Maps) {
|
||||
button := []ice.Any{}
|
||||
switch UserPlaceRole(kit.Int(value[USER_PLACE_ROLE])) {
|
||||
case UserPlaceCreator, UserPlaceLandlord:
|
||||
if value[model.AUTH_STATUS] == "" {
|
||||
m.PushButton(s.PlaceAuth, s.PlaceRemove)
|
||||
break
|
||||
button = append(button, s.PlaceAuth)
|
||||
}
|
||||
fallthrough
|
||||
default:
|
||||
m.PushButton(s.PlaceRemove)
|
||||
}
|
||||
m.PushButton(append(button, s.PlaceRemove)...)
|
||||
}).Action(s.PlaceCreate)
|
||||
s.Button(m, "", s.PlaceCreate)
|
||||
} else {
|
||||
@ -135,11 +129,9 @@ func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message {
|
||||
s.SelectJoinCity(msg)
|
||||
s.SelectJoinAuth(msg)
|
||||
}
|
||||
m.Info("what %v", msg.FormatMeta())
|
||||
if kit.Int(msg.Append(s.Keys(s.UserPlace, model.ROLE))) == 0 {
|
||||
msg.Append(model.DASHBOARD_UID, "")
|
||||
}
|
||||
m.Info("what %v", msg.FormatMeta())
|
||||
s.Place.RewriteAppend(msg)
|
||||
m.Options(msg.AppendSimple(
|
||||
s.Keys(s.Place, model.NAME), s.Keys(s.Place, model.TYPE), s.Keys(s.UserPlace, model.ROLE),
|
||||
@ -156,7 +148,7 @@ func (s Portal) PlaceCreate(m *ice.Message, arg ...string) {
|
||||
return
|
||||
}
|
||||
name := m.Option(s.Keys(s.Place, model.NAME))
|
||||
arg = kit.TransArgKeys(arg, s.Keys(s.Place, model.NAME), model.NAME, s.Keys(s.Place, model.TYPE), model.TYPE)
|
||||
arg = kit.TransArgKeys(arg, s.Keys(s.Place, model.NAME), model.NAME, s.Keys(s.Place, model.INFO), model.INFO, s.Keys(s.Place, model.TYPE), model.TYPE)
|
||||
if m.Cmdy(s.Place, s.Insert, arg[2:]).IsErr() {
|
||||
return
|
||||
}
|
||||
@ -171,9 +163,10 @@ func (s Portal) PlaceRemove(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.UserPlace, s.Delete, m.OptionSimple(model.USER_UID, model.UID))
|
||||
}
|
||||
func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message {
|
||||
s.Tables(m, s.Place).FieldsWithCreatedAT(m, s.UserPlace, s.Key(s.Place, model.INIT), model.AUTH_UID,
|
||||
s.Keys(s.Place, model.UID), s.Keys(s.Place, model.NAME), s.Keys(s.Place, model.TYPE), s.Keys(s.UserPlace, model.ROLE),
|
||||
s.Keys(s.Street, model.UID))
|
||||
s.Tables(m, s.Place).FieldsWithCreatedAT(m, s.UserPlace, s.Keys(s.Place, model.UID),
|
||||
s.Keys(s.Place, model.NAME), s.Keys(s.Place, model.TYPE), s.Keys(s.UserPlace, model.ROLE),
|
||||
s.Key(s.Place, model.INIT), s.AS(s.Key(s.UserPlace, model.STATUS), model.MEMBER_STATUS),
|
||||
s.Keys(s.Street, model.UID), model.AUTH_UID)
|
||||
if len(arg) == 1 {
|
||||
m.Cmdy(s.UserPlace, s.Table.Select, model.USER_UID, arg[0])
|
||||
} else if len(arg) == 2 {
|
||||
@ -181,9 +174,6 @@ func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message {
|
||||
} else {
|
||||
return m
|
||||
}
|
||||
m.Table(func(value ice.Maps) {
|
||||
m.Push(model.SERVICE_ICON, ice.Info.NodeIcon).Push(model.NODENAME, ice.Info.NodeName)
|
||||
})
|
||||
s.SelectJoin(m, s.Street, model.NAME, model.CITY_UID)
|
||||
s.SelectJoinCity(m)
|
||||
s.SelectJoinAuth(m)
|
||||
@ -198,48 +188,21 @@ func (s Portal) PlaceInfo(m *ice.Message, arg ...string) {
|
||||
m.Option(model.PLACE_NAME, msg.Append(model.NAME))
|
||||
}
|
||||
func (s Portal) PlaceAuth(m *ice.Message, arg ...string) {
|
||||
if m.Option(model.AUTH_UID) == "" {
|
||||
place_uid := m.Option(s.Keys(s.Place, model.UID))
|
||||
place_name := m.Option(s.Keys(s.Place, model.NAME))
|
||||
m.Option(model.COMPANY_NAME, m.Option(s.Keys(s.Street, model.NAME)))
|
||||
msg := m.Cmd(s.FindSpaceCmd(m, web.TEAM_RENZHENGSHOUQUAN_PORTAL), s.PlaceCreate, m.OptionSimple(model.CITY_NAME, model.COMPANY_NAME),
|
||||
model.AUTH_TYPE, ice.AUTO, model.AUTH_NAME, place_name, model.FROM_UID, ice.AUTO)
|
||||
if msg.IsErr() {
|
||||
m.Copy(msg)
|
||||
return
|
||||
}
|
||||
m.Cmd(s.Place, s.UpdateAuth, msg.Option(model.AUTH_UID), model.UID, place_uid)
|
||||
s.RecordEventWithName(m.Options(model.NAME, place_name, model.UID, place_uid), "")
|
||||
msg.Cmd(s.Prefix(m, s), s.AfterPlaceAuth)
|
||||
s.StorageCreate(m, "")
|
||||
} else {
|
||||
m.ProcessHold()
|
||||
if m.Option(model.AUTH_UID) != "" {
|
||||
return
|
||||
}
|
||||
place_uid, place_name := m.Option(s.Keys(s.Place, model.UID)), m.Option(s.Keys(s.Place, model.NAME))
|
||||
m.Option(model.COMPANY_NAME, m.Option(s.Keys(s.Street, model.NAME)))
|
||||
msg := m.Cmd(s.FindSpaceCmd(m, api.RENZHENGSHOUQUAN_PORTAL), s.PlaceCreate, m.OptionSimple(model.CITY_NAME, model.COMPANY_NAME),
|
||||
model.AUTH_TYPE, ice.AUTO, model.AUTH_NAME, place_name, model.FROM_UID, ice.AUTO,
|
||||
model.SERVICE_UID, ServiceUID(m), model.PLACE_UID, place_uid,
|
||||
)
|
||||
m.Cmd(s.Place, s.UpdateAuth, msg.Option(model.AUTH_UID), model.UID, place_uid)
|
||||
s.RecordEventWithName(m.Options(model.NAME, place_name, model.UID, place_uid), "")
|
||||
msg.Cmd(s.Prefix(m, s), s.AfterPlaceAuth)
|
||||
s.StorageCreate(m, "")
|
||||
}
|
||||
func (s Portal) PlaceSearch(m *ice.Message, arg ...string) {
|
||||
m.ProcessRewrite(model.INDEX, s.Prefix(m, search{}))
|
||||
}
|
||||
func (s Portal) ScanQRCode(m *ice.Message, arg ...string) {
|
||||
if m.Option(mdb.TYPE) == mdb.TEXT {
|
||||
m.Cmdy(s.UserPlace, s.Insert, s.Key(s.Place, model.UID), m.Option(mdb.TEXT), m.OptionSimple(model.USER_UID), model.ROLE, UserPlaceVisitor)
|
||||
} else if m.Option(mdb.TYPE) == web.LINK {
|
||||
args := m.ParseURL(m.Option(mdb.TEXT))
|
||||
if len(args) > 1 && args[1] == s.Prefix(m, apply{}) {
|
||||
m.Cmdy(s.UserPlace, s.Insert, s.Keys(s.Place, model.UID), args[0], m.OptionSimple(model.USER_UID), model.ROLE, UserPlaceVisitor)
|
||||
}
|
||||
}
|
||||
}
|
||||
func (s Portal) AddRecent(m *ice.Message, arg ...string) {
|
||||
m.Options(m.ConfigSimple(model.SERVICE_UID))
|
||||
if kit.IsIn(m.Append(model.AUTH_STATUS), "2", "issued") {
|
||||
m.Cmd(s.Prefix(m, s.recent), s.Create, s.GetCommands(m, model.SERVICE_UID, arg...), model.AUTH_STATUS, "2")
|
||||
} else {
|
||||
m.Cmd(s.Prefix(m, s.recent), s.Create, s.GetCommands(m, model.SERVICE_UID, arg...))
|
||||
}
|
||||
}
|
||||
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:]...)
|
||||
}
|
||||
|
||||
func (s Portal) ValueCreate(m *ice.Message, arg ...string) {
|
||||
arg = kit.TransArgKeys(arg, s.Keys(m.Option(db.TARGET), model.NAME), model.NAME)
|
||||
arg = kit.TransArgKeys(arg, s.Keys(m.Option(db.TARGET), model.TYPE), model.TYPE)
|
||||
@ -283,36 +246,57 @@ func (s Portal) AfterPlaceRemove(m *ice.Message, arg ...string) {}
|
||||
func (s Portal) BeforePlaceAuth(m *ice.Message, arg ...string) {}
|
||||
func (s Portal) AfterPlaceAuth(m *ice.Message, arg ...string) {}
|
||||
|
||||
func (s Portal) AddRecent(m *ice.Message, arg ...string) {
|
||||
m.Options(m.ConfigSimple(model.SERVICE_UID))
|
||||
if kit.IsIn(m.Append(model.AUTH_STATUS), "2", "issued") {
|
||||
m.Cmd(s.Prefix(m, s.recent), s.Create, s.GetCommands(m, model.SERVICE_UID, arg...), model.AUTH_STATUS, "2")
|
||||
} else {
|
||||
m.Cmd(s.Prefix(m, s.recent), s.Create, s.GetCommands(m, model.SERVICE_UID, arg...))
|
||||
}
|
||||
}
|
||||
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:]...)
|
||||
}
|
||||
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) DashboardCreate(m *ice.Message, name string, arg ...string) func() {
|
||||
kit.If(name == "", func() { name = m.Option(s.Keys(s.Place, model.NAME)) })
|
||||
m.Cmdy(s.FindSpaceCmd(m, web.TEAM_DASHBOARD_PORTAL), s.PlaceCreate, m.OptionSimple(model.CITY_NAME, model.COMPANY_NAME), model.DASHBOARD_NAME, name, model.DASHBOARD_TYPE, "0")
|
||||
m.Cmd(s.FindSpaceCmd(m, web.TEAM_RENZHENGSHOUQUAN_AUTH), "dashboard", m.Option(model.AUTH_UID), m.Option(model.DASHBOARD_UID))
|
||||
m.Cmdy(s.FindSpaceCmd(m, api.DASHBOARD_PORTAL), s.PlaceCreate, m.OptionSimple(model.CITY_NAME, model.COMPANY_NAME), model.DASHBOARD_NAME, name, model.DASHBOARD_TYPE, "0")
|
||||
m.Cmd(s.FindSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), s.UpdateField, m.OptionSimple(model.DASHBOARD_UID), model.UID, m.Option(model.AUTH_UID))
|
||||
return func() { s.DashboardUpdate(m) }
|
||||
}
|
||||
func (s Portal) DashboardInsert(m *ice.Message, score, title, unit string, index ice.Any, field string, arg ...ice.Any) {
|
||||
kit.If(len(arg) == 0, func() { arg = append(arg, s.Keys(s.Place, model.UID), m.Option(s.Keys(s.Place, model.UID))) })
|
||||
m.Cmd(s.FindSpaceCmd(m, web.TEAM_DASHBOARD_SUMMARY), s.Insert, model.SPACE, m.Option(ice.MSG_USERPOD), model.INDEX, s.Prefix(m, index),
|
||||
m.Cmd(s.FindSpaceCmd(m, api.DASHBOARD_SUMMARY), s.Insert, model.SPACE, m.Option(ice.MSG_USERPOD), model.INDEX, s.Prefix(m, index),
|
||||
model.QUERY, kit.Format(arg), mdb.FIELD, field, model.TITLE, title, model.SCORE, score, model.UNIT, unit, m.OptionSimple(model.DASHBOARD_UID))
|
||||
}
|
||||
func (s Portal) DashboardUpdate(m *ice.Message, arg ...string) {
|
||||
if m.Option(model.DASHBOARD_UID) != "" {
|
||||
m.Cmd(s.FindSpaceCmd(m, web.TEAM_DASHBOARD_SUMMARY), "scan", kit.Dict(m.OptionSimple(model.DASHBOARD_UID)))
|
||||
m.Cmd(s.FindSpaceCmd(m, api.DASHBOARD_SUMMARY), "scan", kit.Dict(m.OptionSimple(model.DASHBOARD_UID)))
|
||||
}
|
||||
}
|
||||
func (s Portal) StorageCreate(m *ice.Message, name string, arg ...string) {
|
||||
kit.If(name == "", func() { name = m.Option(s.Keys(s.Place, model.NAME)) })
|
||||
m.Cmdy(s.FindSpaceCmd(m, web.TEAM_STORAGE_PORTAL), s.PlaceCreate, m.OptionSimple(model.CITY_NAME, model.COMPANY_NAME), model.STORAGE_NAME, name, model.STORAGE_TYPE, "0")
|
||||
m.Cmd(s.FindSpaceCmd(m, web.TEAM_RENZHENGSHOUQUAN_AUTH), "storage", m.Option(model.AUTH_UID), m.Option(model.STORAGE_UID))
|
||||
m.Cmdy(s.FindSpaceCmd(m, api.STORAGE_PORTAL), s.PlaceCreate, m.OptionSimple(model.CITY_NAME, model.COMPANY_NAME), model.STORAGE_NAME, name, model.STORAGE_TYPE, "0")
|
||||
m.Cmd(s.FindSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), s.UpdateField, m.OptionSimple(model.STORAGE_UID), model.UID, m.Option(model.AUTH_UID))
|
||||
}
|
||||
func (s Portal) StorageInsert(m *ice.Message, title, content string) {
|
||||
m.Cmd(s.FindSpaceCmd(m, web.TEAM_STORAGE_FILE), s.Insert, model.TITLE, title, model.CONTENT, content, m.OptionSimple(model.STORAGE_UID, model.USER_UID))
|
||||
m.Cmd(s.FindSpaceCmd(m, api.STORAGE_FILE), s.Insert, model.TITLE, title, model.CONTENT, content, m.OptionSimple(model.STORAGE_UID, model.USER_UID))
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(Portal{Table: newTable()}) }
|
||||
|
||||
func (s Portal) UserPlaceRole(m *ice.Message, arg ...string) *ice.Message {
|
||||
if m.Option(model.USER_ROLE) == "" {
|
||||
m.Option(model.USER_ROLE, m.Cmd(s.UserPlace, s.Table.Select, m.OptionSimple(s.Keys(s.Place, model.UID), model.USER_UID)).Append(model.ROLE))
|
||||
msg := m.Cmd(s.UserPlace, s.Table.Select, m.OptionSimple(s.Keys(s.Place, model.UID), model.USER_UID))
|
||||
if MemberStatus(kit.Int(msg.Append(model.STATUS))) == MemberNormal {
|
||||
m.Option(model.USER_ROLE, msg.Append(model.ROLE))
|
||||
} else {
|
||||
m.Option(model.USER_ROLE, "0")
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
@ -323,14 +307,16 @@ func (s Portal) PlaceCmd(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.Place, arg)
|
||||
}
|
||||
|
||||
func (s Portal) UpdateCommand(m *ice.Message, arg ...string) {
|
||||
func (s Portal) CommandUpdate(m *ice.Message, arg ...string) {
|
||||
m.Config(model.SERVICE_UID, arg[0])
|
||||
s.Hash.Select(m.Spawn()).Table(func(value ice.Maps) {
|
||||
uid := m.Cmdx(command{}, s.Table.Modify, model.SERVICE_UID, arg[0], mdb.ICON, value[mdb.ICONS], model.NAME, value[model.NAME], model.INDEX, value[model.INDEX])
|
||||
s.Hash.Modify(m, ctx.INDEX, value[ctx.INDEX], model.COMMAND_UID, uid)
|
||||
})
|
||||
}
|
||||
func (s Portal) SelectCommand(m *ice.Message, arg ...string) { s.Hash.Select(m, arg...) }
|
||||
func (s Portal) CommandSelect(m *ice.Message, arg ...string) {
|
||||
s.Hash.Select(m, arg...)
|
||||
}
|
||||
|
||||
func (s Portal) Create(m *ice.Message, arg ...string) {
|
||||
args := []string{ctx.INDEX, m.Option(ctx.INDEX)}
|
||||
|
@ -7,7 +7,10 @@ Volcanos(chat.ONIMPORT, {
|
||||
{view: html.TITLE, list: [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]]},
|
||||
]},
|
||||
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.city_name, value._street]},
|
||||
{view: html.STATUS, list: [
|
||||
// value.uid.slice(0, 6), can.onimport.timeView(can, value),
|
||||
can.onimport.cityView(can, value), can.onimport.streetView(can, value),
|
||||
]},
|
||||
] },
|
||||
myTrans: function(can, value, PLACE_UID, PLACE_NAME, PLACE_TYPE, USER_PLACE_ROLE, STREET_NAME) {
|
||||
value.icons = value.icons||can.Conf(can.core.Keys("_trans.value", PLACE_TYPE, mdb.ICONS, value[PLACE_TYPE]))
|
||||
@ -80,8 +83,10 @@ Volcanos(chat.ONIMPORT, {
|
||||
myTitle: function(can, name, help, target) {
|
||||
can.page.Append(can, target, [{view: html.TITLE, list: [{text: can.user.trans(can, name, help)}]}])
|
||||
},
|
||||
myCount: function(can, value, target) { can.onmotion.toggle(can, target, !!value._count)
|
||||
if (can.onmotion.cache(can, function() { return value._uid }, target) || !value.dashboard_uid) { return } can.onimport.myTitle(can, "My Count", "我的数据", target)
|
||||
myCount: function(can, value, target) {
|
||||
var show = can.onmotion.toggle(can, target, value.dashboard_uid && (!value.member_status || value.member_status == "normal"))
|
||||
if (can.onmotion.cache(can, function() { return value._uid }, target) || !show) { return }
|
||||
can.onimport.myTitle(can, "My Count", "我的数据", target)
|
||||
can.onappend.plugin(can._root.Action, {width: can.ConfWidth()-40, space: "20240903-operation", index: "web.team.dashboard.summary", args: [value.dashboard_uid]}, function(sub) {
|
||||
can.onmotion.toggle(can, target, value._count = true)
|
||||
}, target)
|
||||
@ -180,6 +185,7 @@ Volcanos(chat.ONEXPORT, {
|
||||
place: function(can, value) { return can.onexport.session(can, PLACE_UID, value) },
|
||||
value: function(can, value) {
|
||||
if (!value || !value._uid) { return }
|
||||
can.onmotion.toggle(can, can.ui.myindex, !value.member_status || value.member_status == "normal")
|
||||
can.sup.current = value, can.onexport.index(can, can.sup.current)
|
||||
can.onexport.place(can, value._uid), can.onexport.hash(can, value._uid), can.onexport.title(can, value._name, can.ConfHelp())
|
||||
can.user.agent.init(can, value.city_name+" "+value._street)
|
||||
|
@ -2,16 +2,16 @@
|
||||
"portal": "用户场景",
|
||||
"placeCreate": "创建", "placeRemove": "删除", "placeAuth": "认证",
|
||||
"placeSearch": "搜索", "scanQRCode": "扫码",
|
||||
"qrcode": "场景码", "event": "事件流", "apply": "权限申请", "allow": "权限审批",
|
||||
"email": "邮箱配置", "member": "场景成员", "placeUser": "场景成员",
|
||||
"notice": "通知公告", "domain": "领域分类",
|
||||
"market": "人民广场", "message": "消息待办", "recent": "最近访问", "service": "服务发现", "support": "客服支持",
|
||||
"qrcode": "场景码", "event": "事件流", "apply": "权限申请", "allow": "权限审批", "notice": "通知公告",
|
||||
"member": "场景成员", "setting": "配置", "email": "邮箱配置",
|
||||
"domain": "领域分类", "market": "人民广场", "message": "消息待办", "recent": "最近访问", "service": "服务发现", "support": "客服支持",
|
||||
"cancel": "取消", "submit": "提交", "finish": "完成", "reject": "驳回", "approve": "通过",
|
||||
"read": "已读", "done": "完成", "sticky": "置顶", "unSticky": "取消置顶",
|
||||
"autogen": "生成", "compile": "编译", "oauth": "授权", "project": "项目",
|
||||
"marketInsert": "推广",
|
||||
"commentCreate": "评论",
|
||||
"applyQRCode": "邀请码",
|
||||
"marketInsert": "推广", "commentCreate": "评论", "applyQRCode": "邀请码",
|
||||
"user": "用户信息", "city": "城市信息", "street": "街道信息", "school": "学校信息", "company": "公司信息",
|
||||
"auth": "认证",
|
||||
"authCreate": "认证申请",
|
||||
"icons": {
|
||||
"qrcode": "https://img.icons8.com/officel/80/qr-code.png",
|
||||
"event": "https://img.icons8.com/officel/80/property-with-timer.png",
|
||||
@ -19,6 +19,7 @@
|
||||
"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",
|
||||
"setting": "https://img.icons8.com/officel/80/settings--v1.png",
|
||||
"member": "https://img.icons8.com/officel/80/person-at-home.png",
|
||||
"domain": "https://img.icons8.com/officel/80/categorize.png",
|
||||
"market": "https://img.icons8.com/officel/80/square.png",
|
||||
@ -30,6 +31,8 @@
|
||||
"style": {
|
||||
"reject": "danger",
|
||||
"approve": "notice",
|
||||
"disable": "danger",
|
||||
"enable": "notice",
|
||||
"placeAuth": "notice",
|
||||
"placeRemove": "danger"
|
||||
},
|
||||
@ -37,24 +40,30 @@
|
||||
"My Place": "我的场景",
|
||||
"user_uid": "用户",
|
||||
"user_name": "用户昵称",
|
||||
"user_info": "用户信息",
|
||||
"user_avatar": "用户头像",
|
||||
"user_place_role": "用户角色",
|
||||
"user_background": "用户背景",
|
||||
"user_place_role": "成员角色",
|
||||
"place_uid": "场景",
|
||||
"place_name": "场景名称",
|
||||
"place_type": "场景类型",
|
||||
"place_address": "场景地址",
|
||||
"message_status": "消息状态",
|
||||
"street_name": "街道名称",
|
||||
"company_uid": "公司",
|
||||
"company_name": "公司名称",
|
||||
"city_name": "城市名称",
|
||||
"city_info": "城市信息",
|
||||
"auth_name": "认证主体",
|
||||
"domain_uid": "领域分类",
|
||||
"auth_info": "认证信息",
|
||||
"auth_type": "认证类型",
|
||||
"auth_status": "认证状态",
|
||||
"service_name": "服务名称",
|
||||
"qrcode_type": "链接类型",
|
||||
"apply_status": "申请状态",
|
||||
"allow_status": "审批状态",
|
||||
"member_status": "成员状态",
|
||||
"domain_uid": "领域分类",
|
||||
"message_status": "消息状态",
|
||||
"service_name": "服务名称",
|
||||
"begin_time": "起始时间",
|
||||
"end_time": "结束时间",
|
||||
"cancel_time": "取消时间",
|
||||
@ -68,24 +77,6 @@
|
||||
"table": "应用"
|
||||
},
|
||||
"value": {
|
||||
"auth_status": {
|
||||
"create": "🕑 待认证",
|
||||
"request": "🕑 待认证",
|
||||
"issued": "✅ 已认证",
|
||||
"revoked": "❌ 已吊销"
|
||||
},
|
||||
"apply_status": {
|
||||
"create": "🕑 待提交",
|
||||
"cancel": "❌ 已取消",
|
||||
"submit": "🕑 已提交",
|
||||
"rejected": "❌ 已驳回",
|
||||
"approved": "✅ 已通过"
|
||||
},
|
||||
"allow_status": {
|
||||
"create": "🕑 待审批",
|
||||
"rejected": "❌ 已驳回",
|
||||
"approved": "✅ 已通过"
|
||||
},
|
||||
"user_place_role": {
|
||||
"visitor": "访客",
|
||||
"creator": "创建人",
|
||||
@ -97,25 +88,6 @@
|
||||
"landlord": "danger"
|
||||
}
|
||||
},
|
||||
"message_status": {
|
||||
"all": "全部",
|
||||
"create": "未读",
|
||||
"read": "待办",
|
||||
"done": "完成",
|
||||
"style": {
|
||||
"create": "danger"
|
||||
}
|
||||
},
|
||||
"service_type": {
|
||||
"worker": "空间"
|
||||
},
|
||||
"service_status": {
|
||||
"online": "在线"
|
||||
},
|
||||
"qrcode_type": {
|
||||
"portal": "门户首页",
|
||||
"apply": "权限申请"
|
||||
},
|
||||
"place_type": {
|
||||
"house": "住宅",
|
||||
"hotel": "宾馆",
|
||||
@ -135,6 +107,62 @@
|
||||
"factory": "https://img.icons8.com/officel/80/manufacturing.png",
|
||||
"hospital": "https://img.icons8.com/officel/80/clinic.png"
|
||||
}
|
||||
},
|
||||
"auth_type": {
|
||||
"root": "官方",
|
||||
"city": "城市",
|
||||
"personal": "个人",
|
||||
"service": "服务",
|
||||
"company": "公司",
|
||||
"style": {
|
||||
"root": "danger",
|
||||
"city": "danger",
|
||||
"personal": "danger"
|
||||
}
|
||||
},
|
||||
"auth_status": {
|
||||
"create": "🕑 待认证",
|
||||
"request": "🕑 待认证",
|
||||
"issued": "✅ 已认证",
|
||||
"revoked": "❌ 已吊销"
|
||||
},
|
||||
"setting": {
|
||||
"profile": "个人名片"
|
||||
},
|
||||
"qrcode_type": {
|
||||
"portal": "门户首页",
|
||||
"apply": "权限申请"
|
||||
},
|
||||
"apply_status": {
|
||||
"create": "🕑 待提交",
|
||||
"cancel": "❌ 已取消",
|
||||
"submit": "🕑 已提交",
|
||||
"rejected": "❌ 已驳回",
|
||||
"approved": "✅ 已通过"
|
||||
},
|
||||
"allow_status": {
|
||||
"create": "🕑 待审批",
|
||||
"rejected": "❌ 已驳回",
|
||||
"approved": "✅ 已通过"
|
||||
},
|
||||
"member_status": {
|
||||
"normal": "正常",
|
||||
"disabled": "❌ 已禁用"
|
||||
},
|
||||
"message_status": {
|
||||
"all": "全部",
|
||||
"create": "未读",
|
||||
"read": "待办",
|
||||
"done": "完成",
|
||||
"style": {
|
||||
"create": "danger"
|
||||
}
|
||||
},
|
||||
"service_type": {
|
||||
"worker": "空间"
|
||||
},
|
||||
"service_status": {
|
||||
"online": "在线"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +0,0 @@
|
||||
package gonganxitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
)
|
||||
|
||||
type profile struct {
|
||||
Tables
|
||||
user user
|
||||
}
|
||||
|
||||
func (s profile) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
m.Cmdy(s.user, s.Select, model.UID, arg[0])
|
||||
}
|
||||
m.Echo("hello world")
|
||||
m.Display("")
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(profile{}) }
|
@ -1,5 +0,0 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) {
|
||||
can.page.Append(can, can._output, [{img: can.misc.Resource(can, msg.Append("avatar"))}])
|
||||
},
|
||||
})
|
@ -4,7 +4,7 @@ Volcanos(chat.ONIMPORT, {
|
||||
value.icons = can.misc.Resource(can, value.service_icon.split("?")[0], value.space); if (value.score > 0) { value._style = ["sticky"] }
|
||||
return [
|
||||
{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: [can.onimport.cityView(can, value), value.street_name, value.service_name]},
|
||||
]
|
||||
}, function(event, value) { can.onaction._goback(can); var args = can.core.Split(value.args)
|
||||
can.onimport.myPlugin(can, {space: value.space, index: value.index, args: [args[0]]})
|
||||
|
@ -27,8 +27,11 @@ type service struct {
|
||||
conf string `name:"conf" role:"void"`
|
||||
}
|
||||
|
||||
func ServiceUID(m *ice.Message) string {
|
||||
return kit.Hashs(ice.Info.Hostname, ice.Info.Pwd, m.Prefix("portal"))
|
||||
}
|
||||
func (s service) Update(m *ice.Message, arg ...string) {
|
||||
uid := kit.Hashs(ice.Info.Hostname, ice.Info.Pwd, m.Option(ctx.INDEX))
|
||||
uid := ServiceUID(m)
|
||||
if s.Select(m.Spawn(), model.UID, uid).Length() == 0 {
|
||||
s.Insert(m, kit.Simple(model.UID, uid, m.OptionSimple(mdb.ICON, mdb.NAME, ctx.INDEX), nfs.PATHNAME, ice.Info.Pwd, tcp.HOSTNAME, ice.Info.Hostname)...)
|
||||
m.Cmd(s.PrefixPortal(m)).Table(func(value ice.Maps) { m.Cmd(s.PrefixPortal(m), mdb.MODIFY, value[ctx.INDEX], mdb.ENABLE, ice.TRUE) })
|
||||
@ -53,7 +56,6 @@ func (s service) Autogen(m *ice.Message, arg ...string) {
|
||||
p, from := path.Join(nfs.SRC, m.Option(mdb.NAME)), "template/"
|
||||
msg := m.Cmd("web.team.gonganxitong.service")
|
||||
m.Option("table", kit.LowerCapital(table))
|
||||
m.Option("what", kit.LowerCapital(table))
|
||||
m.Cmd(nfs.DEFS, path.Join(p, "model/model.go"), msg.Template(from+"model/model.go"))
|
||||
m.Cmd(nfs.DEFS, path.Join(p, "common.go"), msg.Template(from+"common.go"))
|
||||
m.Cmd(nfs.DEFS, path.Join(p, "portal.go"), msg.Template(from+"portal.go"))
|
||||
|
12
src/gonganxitong/setting.css
Normal file
12
src/gonganxitong/setting.css
Normal file
@ -0,0 +1,12 @@
|
||||
$output>div.item {
|
||||
border-radius:10px; background-color:var(--output-bg-color); padding:10px; margin:10px;
|
||||
display:flex; align-items:center;
|
||||
}
|
||||
$output>div.item span.name {
|
||||
flex-grow:1;
|
||||
}
|
||||
$output>div.item span.outer {
|
||||
background-color:gray; border-radius:12px; padding:2px; height:24px; width:40px; display:inline-block; float:right; }
|
||||
$output>div.item span.inner { border-radius:10px; background-color:white; height:20px; width:20px; display:inline-block; }
|
||||
$output>div.item span.outer.on { background-color:var(--notice-bg-color); }
|
||||
$output>div.item span.outer.on span.inner { float:right; }
|
61
src/gonganxitong/setting.go
Normal file
61
src/gonganxitong/setting.go
Normal file
@ -0,0 +1,61 @@
|
||||
package gonganxitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
)
|
||||
|
||||
type setting struct {
|
||||
Table
|
||||
service service
|
||||
recent recent
|
||||
order string `data:"102"`
|
||||
short string `data:"name"`
|
||||
field string `data:"name,type,help"`
|
||||
fields string `data:"name,value"`
|
||||
create string `name:"create name* type* help*" role:"tech"`
|
||||
update string `name:"update" role:"void"`
|
||||
}
|
||||
|
||||
func (s setting) Init(m *ice.Message, arg ...string) {
|
||||
s.Table.Init(m, arg...)
|
||||
s.Create(m, model.NAME, "profile", model.TYPE, "radio", "help", "将本系统展示到个人名片首页")
|
||||
}
|
||||
func (s setting) Create(m *ice.Message, arg ...string) {
|
||||
s.Hash.Create(m, arg...)
|
||||
}
|
||||
func (s setting) Update(m *ice.Message, arg ...string) {
|
||||
m.OptionDefault(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))
|
||||
if s.Table.Select(m.Spawn(), m.OptionSimple(model.PLACE_UID, model.USER_UID, model.NAME)...).Length() == 0 {
|
||||
s.Table.Insert(m, m.OptionSimple(model.PLACE_UID, model.USER_UID, model.NAME, model.VALUE)...)
|
||||
} else {
|
||||
s.Table.Update(m, kit.Dict(m.OptionSimple(model.VALUE)), m.OptionSimple(model.PLACE_UID, model.USER_UID, model.NAME)...)
|
||||
}
|
||||
}
|
||||
func (s setting) Profile(m *ice.Message, arg ...string) {
|
||||
s.Tables(m, "LEFT JOIN recents ON args = settings.place_uid AND recents.user_uid = settings.user_uid AND recents.deleted_at IS NULL", s.service).Fields(m,
|
||||
model.SERVICE_ICON, model.SERVICE_NAME,
|
||||
s.Key(s.recent, model.CITY_NAME), s.Key(s.recent, model.STREET_NAME), s.Key(s.recent, model.PLACE_NAME),
|
||||
s.AS(model.NODENAME, model.SPACE), model.INDEX, model.PLACE_UID,
|
||||
)
|
||||
s.Select(m, s.Key(s, model.USER_UID), arg[0], s.Key(s, model.NAME), "profile", s.Key(s, model.VALUE), "on")
|
||||
}
|
||||
func (s Table) SettingProfile(m *ice.Message, arg ...string) *ice.Message {
|
||||
return m.Cmdy(s.Prefix(m, setting{}), setting{}.Profile, arg)
|
||||
}
|
||||
func (s setting) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
msg := m.Spawn()
|
||||
data := ice.Maps{}
|
||||
s.Select(msg, model.PLACE_UID, arg[0], model.USER_UID, m.Option(model.USER_UID))
|
||||
msg.Table(func(value ice.Maps) { data[value[model.NAME]] = value[model.VALUE] })
|
||||
s.Hash.List(m).Table(func(value ice.Maps) { m.Push(model.VALUE, data[value[model.NAME]]) })
|
||||
} else if len(arg) == 2 {
|
||||
s.SelectDetail(m, model.PLACE_UID, arg[0], model.USER_UID, m.Option(model.USER_UID), model.NAME, arg[1])
|
||||
}
|
||||
s.Display(m, "").DisplayCSS("")
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(setting{Table: newTable()}) }
|
13
src/gonganxitong/setting.js
Normal file
13
src/gonganxitong/setting.js
Normal file
@ -0,0 +1,13 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) {
|
||||
can.page.Append(can, can._output, msg.Table(function(value) {
|
||||
return {view: html.ITEM, list: [{text: [can.user.trans(can, value.name, null, "value.setting"), "", mdb.NAME]}, can.onimport[value.type](can, value)]}
|
||||
}))
|
||||
},
|
||||
radio: function(can, value) {
|
||||
return {text: ["", "", ["outer", value.value]], list: [{text: ["", "", "inner"]}], onclick: function(event) {
|
||||
if (value.value == "on") { value.value = "off" } else { value.value = "on" }
|
||||
can.run(can.request(event, value, can.Option(), {_toast: value.name}), [ctx.ACTION, mdb.UPDATE])
|
||||
}}
|
||||
},
|
||||
})
|
@ -2,11 +2,16 @@ package gonganxitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
)
|
||||
|
||||
type street struct{ Table }
|
||||
type street struct {
|
||||
Table
|
||||
modify string `name:"modify street_info" role:"void"`
|
||||
list string `name:"list street_name auto" role:"void"`
|
||||
}
|
||||
|
||||
func (s street) FindOrCreateByName(m *ice.Message, arg ...string) {
|
||||
if msg := m.Cmd(s, s.Select, model.CITY_UID, arg[1], model.NAME, arg[3]); msg.Length() == 0 {
|
||||
@ -16,5 +21,28 @@ func (s street) FindOrCreateByName(m *ice.Message, arg ...string) {
|
||||
arg[2], arg[3] = model.STREET_UID, msg.Append(model.UID)
|
||||
}
|
||||
}
|
||||
func (s street) Modify(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(model.INFO, m.Option(model.STREET_INFO)), model.NAME, m.Option(model.STREET_NAME))
|
||||
}
|
||||
func (s street) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
if m.IsTech() {
|
||||
s.Select(m, arg...)
|
||||
}
|
||||
} else {
|
||||
msg := s.Select(m.Spawn(), model.NAME, arg[0])
|
||||
m.Option(model.STREET_NAME, msg.Append(model.NAME))
|
||||
m.Option(model.STREET_INFO, msg.Append(model.INFO))
|
||||
m.Option(model.STREET_AVATAR, msg.Append(model.AVATAR))
|
||||
m.Option(model.STREET_BACKGROUND, msg.Append(model.BACKGROUND))
|
||||
msg.Table(func(value ice.Maps) {
|
||||
if value[model.AUTH_UID] != "" {
|
||||
m.Cmdy("web.team.renzhengshouquan.auth", value[model.AUTH_UID])
|
||||
}
|
||||
})
|
||||
kit.If(m.IsTech(), func() { m.Action(s.Modify) })
|
||||
m.Display("")
|
||||
}
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(street{}) }
|
||||
|
18
src/gonganxitong/street.js
Normal file
18
src/gonganxitong/street.js
Normal file
@ -0,0 +1,18 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { msg.Option("_share_title", msg.Option("street_name"))
|
||||
can.ui = can.page.Appends(can, can._output, [html.HEAD, html.LIST])
|
||||
can.page.Append(can, can.ui.head, [{img: can.misc.Resource(can, "usr/icons/background.jpg")}])
|
||||
can.page.Append(can, can.ui.head, [can.onimport.itemcard(can, {avatar: msg.Option("street_avatar")}, [
|
||||
{view: html.TITLE, list: [msg.Option("street_name"), can.onimport.titleAction(can, msg)]},
|
||||
{view: html.STATUS, list: [msg.Option("street_info")]},
|
||||
])])
|
||||
can.onimport.myView(can, msg, function(value) {
|
||||
return [
|
||||
{view: html.TITLE, list: [value.name]},
|
||||
{view: html.STATUS, list: [value.info]},
|
||||
]
|
||||
}, function(event, value) {
|
||||
// can.onimport.myPlugin(can, {space: value.space, index: value.index, args: [value.place_uid]})
|
||||
}, can.ui.list)
|
||||
},
|
||||
})
|
7
src/gonganxitong/support.css
Normal file
7
src/gonganxitong/support.css
Normal file
@ -0,0 +1,7 @@
|
||||
$output>div.list { background-color:var(--output-bg-color); height:calc(100% - 32px - 20px); }
|
||||
$output>div.list>div.item.card { margin:10px; display:flex; align-items:start; }
|
||||
$output>div.list>div.item.card>div.container { flex-grow:1; }
|
||||
$output>div.send { padding:10px; width:100%; display:flex; align-items:center; position:fixed; bottom:0; }
|
||||
$output>div.send input[type=text] { flex-grow:1; }
|
||||
$output>div.send input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||
$output>div.send span.button { background-color:var(--notice-bg-color); color:var(--notice-fg-color); padding:10px; margin-left:-3px; height:32px; display:flex; align-items:center; }
|
@ -1,12 +1,29 @@
|
||||
package gonganxitong
|
||||
|
||||
import "shylinux.com/x/ice"
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong/model"
|
||||
)
|
||||
|
||||
type support struct {
|
||||
Table
|
||||
order string `data:"905"`
|
||||
order string `data:"905"`
|
||||
create string `name:"create title content" role:"void"`
|
||||
}
|
||||
|
||||
func (s support) List(m *ice.Message, arg ...string) {}
|
||||
func (s support) Create(m *ice.Message, arg ...string) {
|
||||
m.OptionDefault(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))
|
||||
s.Insert(m, kit.Simple(arg, m.OptionSimple(model.PLACE_UID, model.USER_UID))...)
|
||||
}
|
||||
func (s support) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
s.Orders(m, model.CREATED_AT)
|
||||
s.Select(m, model.USER_UID, m.Option(model.USER_UID)).Action()
|
||||
}
|
||||
s.SelectJoinUser(m)
|
||||
s.Display(m, "").DisplayCSS("")
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(support{Table: newTable()}) }
|
||||
|
20
src/gonganxitong/support.js
Normal file
20
src/gonganxitong/support.js
Normal file
@ -0,0 +1,20 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { var target
|
||||
can.ui = can.page.Append(can, can._output, [html.LIST, {view: "send", list: [
|
||||
{type: html.INPUT, data: {type: html.TEXT}, onfocus: function(event) {
|
||||
target = event.target
|
||||
}, onblur: function(event) {
|
||||
}},
|
||||
{text: [can.user.trans(can, "send"), "", html.BUTTON], onclick: function(event) {
|
||||
can.runAction(can.request(event, {_handle: ice.TRUE}), mdb.CREATE, [html.TITLE, "", html.CONTENT, target.value])
|
||||
}},
|
||||
]}])
|
||||
can.page.Append(can, can.ui.list, msg.Table(function(value) {
|
||||
return {view: html.ITEM_CARD, list: [{img: value.user_avatar}, {view: html.CONTAINER, list: [
|
||||
value.title && {view: html.TITLE, list: [{text: value.title}]},
|
||||
{view: html.STATUS, list: [{text: value.user_name}, can.onimport.timeView(can, value)]},
|
||||
{view: html.CONTENT, list: [{text: value.content}]},
|
||||
]}]}
|
||||
}))
|
||||
},
|
||||
})
|
@ -6,7 +6,7 @@
|
||||
},
|
||||
"input": {
|
||||
"My {{.Option "Class"}}": "我的场景",
|
||||
"user_{{.Option "class"}}_role": "用户角色",
|
||||
"user_{{.Option "class"}}_role": "成员角色",
|
||||
"{{.Option "class"}}_name": "场景名称",
|
||||
"{{.Option "class"}}_type": "场景类型"
|
||||
},
|
||||
|
4
src/gonganxitong/user.css
Normal file
4
src/gonganxitong/user.css
Normal file
@ -0,0 +1,4 @@
|
||||
$output>div.head { margin-bottom:20px; }
|
||||
$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 div.title div.item.button i { display:none; }
|
@ -13,10 +13,14 @@ import (
|
||||
|
||||
type user struct {
|
||||
Table
|
||||
community string `data:"20240724-community"`
|
||||
template string `data:"4b-Z_r8dZmm1pHdd2h4A10VVYX4OIHvemlLjsHKBj2s"`
|
||||
create string `name:"create open_id* usernick avatar"`
|
||||
email string `name:"email email*"`
|
||||
setting setting
|
||||
community string `data:"20240724-community"`
|
||||
template string `data:"4b-Z_r8dZmm1pHdd2h4A10VVYX4OIHvemlLjsHKBj2s"`
|
||||
create string `name:"create open_id* usernick avatar"`
|
||||
modify string `name:"modify user_name user_info" role:"void"`
|
||||
email string `name:"email email*"`
|
||||
list string `name:"list uid auto" role:"void"`
|
||||
authCreate string `name:"authCreate city_name* company_name* auth_name* auth_info" role:"tech"`
|
||||
}
|
||||
|
||||
func (s user) Create(m *ice.Message, arg ...string) {
|
||||
@ -32,15 +36,35 @@ func (s user) Create(m *ice.Message, arg ...string) {
|
||||
m.Option(model.USER_UID, m.Append(model.UID))
|
||||
}
|
||||
}
|
||||
func (s user) Modify(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(
|
||||
model.NAME, m.Option(model.USER_NAME),
|
||||
model.INFO, m.Option(model.USER_INFO),
|
||||
), model.UID, m.Option(model.USER_UID))
|
||||
}
|
||||
func (s user) Delete(m *ice.Message, arg ...string) {
|
||||
m.Options(model.NAME, "profile", model.VALUE, "off")
|
||||
m.Cmd(s.setting, s.Update)
|
||||
}
|
||||
func (s user) AuthCreate(m *ice.Message, arg ...string) {
|
||||
s.Table.AuthCreate(m, m.Option(model.CITY_NAME), m.Option(model.COMPANY_NAME), 2, m.Option(model.AUTH_NAME), m.Option(model.AUTH_INFO), model.UID, m.Option(model.USER_UID))
|
||||
}
|
||||
func (s user) List(m *ice.Message, arg ...string) {
|
||||
if m.IsTech() {
|
||||
s.Select(m, arg...).Table(func(value ice.Maps) {
|
||||
if value[model.UID] != m.Option(model.USER_UID) {
|
||||
m.PushButton(s.SetCookie)
|
||||
} else {
|
||||
m.PushButton()
|
||||
}
|
||||
})
|
||||
if len(arg) == 0 {
|
||||
if m.IsTech() {
|
||||
s.Select(m, arg...).Table(func(value ice.Maps) {
|
||||
if value[model.UID] != m.Option(model.USER_UID) {
|
||||
m.PushButton(s.SetCookie)
|
||||
} else {
|
||||
m.PushButton()
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
s.Select(m, model.UID, arg[0])
|
||||
if m.Append(model.AUTH_UID) == "" && arg[0] == m.Option(model.USER_UID) {
|
||||
m.EchoInfoButton("请申请个人认证", s.AuthCreate)
|
||||
}
|
||||
}
|
||||
}
|
||||
func (s user) SetCookie(m *ice.Message, arg ...string) {
|
||||
|
21
src/gonganxitong/user.js
Normal file
21
src/gonganxitong/user.js
Normal file
@ -0,0 +1,21 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { msg.Option("_share_title", msg.Option("user_name"))
|
||||
can.ui = can.page.Appends(can, can._output, [html.HEAD, html.LIST])
|
||||
can.page.Append(can, can.ui.head, [{img: can.misc.Resource(can, "usr/icons/background.jpg")}])
|
||||
can.page.Append(can, can.ui.head, [can.onimport.itemcard(can, {user_name: msg.Option("user_name"), user_avatar: msg.Option("user_avatar")}, [
|
||||
{view: html.TITLE, list: [msg.Option("user_name"), can.onimport.titleAction(can, msg)]},
|
||||
{view: html.STATUS, list: [msg.Option("user_info")]},
|
||||
])])
|
||||
var list = {}
|
||||
can.onimport.myView(can, msg, function(value) {
|
||||
if (list[value.place_uid]) { return } list[value.place_uid] = value
|
||||
value.icon = can.misc.Resource(can, value.service_icon.split("?")[0], value.space);
|
||||
return [
|
||||
{view: html.TITLE, list: [value.place_name]},
|
||||
{view: html.STATUS, list: [value.city_name, value.street_name, value.service_name]},
|
||||
]
|
||||
}, function(event, value) {
|
||||
can.onimport.myPlugin(can, {space: value.space, index: value.index, args: [value.place_uid]})
|
||||
}, can.ui.list)
|
||||
},
|
||||
})
|
@ -1,13 +1,12 @@
|
||||
{
|
||||
"portal": "活动组织",
|
||||
"portal": "活动组织", "member": "组织成员",
|
||||
"activity": "活动安排",
|
||||
"member": "组织成员",
|
||||
"icons": {
|
||||
"activity": "https://img.icons8.com/officel/80/activity-grid.png"
|
||||
},
|
||||
"input": {
|
||||
"My Group": "我的组织",
|
||||
"user_group_role": "用户角色",
|
||||
"user_group_role": "成员角色",
|
||||
"group_name": "组织名称",
|
||||
"group_type": "组织类型"
|
||||
},
|
||||
|
@ -7,17 +7,19 @@ import (
|
||||
"shylinux.com/x/community/src/renzhengshouquan/model"
|
||||
)
|
||||
|
||||
type auth struct {
|
||||
type Auth struct {
|
||||
Table
|
||||
cert cert
|
||||
fields string `data:"name,auth_type,auth_status"`
|
||||
order string `data:"2"`
|
||||
models string `data:"auth"`
|
||||
fields string `data:"creator,name,info,auth_type,auth_status,avatar,background,service_uid,place_uid"`
|
||||
memberList string `name:"memberList" role:"leader,worker"`
|
||||
certList string `name:"certList" role:"leader,worker"`
|
||||
issue string `name:"issue" role:"leader,worker"`
|
||||
revoke string `name:"revoke" role:"leader,worker"`
|
||||
}
|
||||
|
||||
func (s auth) List(m *ice.Message, arg ...string) {
|
||||
func (s Auth) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
s.Select(m, model.FROM_UID, arg[0]).Action()
|
||||
} else if len(arg) == 2 {
|
||||
@ -36,14 +38,14 @@ func (s auth) List(m *ice.Message, arg ...string) {
|
||||
}
|
||||
}).Display("")
|
||||
}
|
||||
func (s auth) MemberList(m *ice.Message, arg ...string) {
|
||||
func (s Auth) MemberList(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(m.Prefix("member"), arg[0])
|
||||
}
|
||||
func (s auth) CertList(m *ice.Message, arg ...string) {
|
||||
func (s Auth) CertList(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.cert, arg[0]).Action()
|
||||
kit.If(m.Length() == 0, func() { m.Echo("没有上传证件") })
|
||||
}
|
||||
func (s auth) Issue(m *ice.Message, arg ...string) {
|
||||
func (s Auth) Issue(m *ice.Message, arg ...string) {
|
||||
msg := m.Cmd(userAuth{}, m.Option(model.USER_UID), m.Option(model.AUTH_UID))
|
||||
if !m.IsTech() || AuthType(kit.Int(msg.Append(model.AUTH_TYPE))) != AuthRoot {
|
||||
if m.WarnNotValid(AuthStatus(kit.Int(msg.Append(model.AUTH_STATUS))) != AuthIssued) {
|
||||
@ -58,19 +60,23 @@ func (s auth) Issue(m *ice.Message, arg ...string) {
|
||||
m.Cmd("web.team.gonganxitong.user", s.UpdateAuth, m.Option(model.UID), model.UID, m.Append(model.CREATOR))
|
||||
case AuthCompany:
|
||||
m.Cmd("web.team.guanlixitong.company", s.UpdateAuth, m.Option(model.UID), model.NAME, m.Append(model.NAME))
|
||||
case AuthSchool:
|
||||
m.Cmd("web.team.jiaowuxitong.school", s.UpdateAuth, m.Option(model.UID), model.NAME, m.Append(model.NAME))
|
||||
case AuthStreet:
|
||||
m.Cmd("web.team.gonganxitong.street", s.UpdateAuth, m.Option(model.UID), model.NAME, m.Append(model.NAME))
|
||||
}
|
||||
}
|
||||
func (s auth) Revoke(m *ice.Message, arg ...string) {
|
||||
func (s Auth) Revoke(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(model.STATUS, AuthRevoked), model.FROM_UID, m.Option(model.AUTH_UID), model.UID, m.Option(model.UID))
|
||||
}
|
||||
func (s auth) Dashboard(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(model.DASHBOARD_UID, arg[1]), model.UID, arg[0])
|
||||
}
|
||||
func (s auth) Storage(m *ice.Message, arg ...string) {
|
||||
func (s Auth) Storage(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(model.STORAGE_UID, arg[1]), model.UID, arg[0])
|
||||
}
|
||||
func (s Auth) Dashboard(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(model.DASHBOARD_UID, arg[1]), model.UID, arg[0])
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(auth{}) }
|
||||
func init() { ice.TeamCtxCmd(Auth{}) }
|
||||
|
||||
type AuthType int
|
||||
|
||||
@ -80,6 +86,8 @@ const (
|
||||
AuthPersonal
|
||||
AuthService
|
||||
AuthCompany
|
||||
AuthSchool
|
||||
AuthStreet
|
||||
)
|
||||
|
||||
var AuthTypeList = map[AuthType]string{
|
||||
@ -88,6 +96,8 @@ var AuthTypeList = map[AuthType]string{
|
||||
AuthPersonal: "personal",
|
||||
AuthService: "service",
|
||||
AuthCompany: "company",
|
||||
AuthSchool: "school",
|
||||
AuthStreet: "street",
|
||||
}
|
||||
|
||||
func (s AuthType) String() string { return AuthTypeList[s] }
|
||||
|
@ -1,8 +1,8 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) {
|
||||
can.onimport.myView(can, msg, function(value) { return [
|
||||
{view: html.TITLE, list: [value.name, can.onimport.textView(can, value, "auth_type")]},
|
||||
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), can.onimport.textView(can, value, "auth_status")]},
|
||||
{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)]},
|
||||
] })
|
||||
},
|
||||
})
|
1
src/renzhengshouquan/cert.css
Normal file
1
src/renzhengshouquan/cert.css
Normal file
@ -0,0 +1 @@
|
||||
$output div.item.card div.output div.output img { height:unset; width:100%; margin-right:0; }
|
@ -1,15 +1,32 @@
|
||||
package renzhengshouquan
|
||||
|
||||
import "shylinux.com/x/ice"
|
||||
import (
|
||||
"path"
|
||||
|
||||
"shylinux.com/x/ice"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
|
||||
"shylinux.com/x/community/src/renzhengshouquan/model"
|
||||
)
|
||||
|
||||
type cert struct {
|
||||
Table
|
||||
fields string `data:"title,content,user_uid"`
|
||||
create string `name:"create title* content*" role:"leader"`
|
||||
modify string `name:"modify title* content*" role:"leader"`
|
||||
order string `data:"1"`
|
||||
fields string `data:"title,content,path,user_uid"`
|
||||
upload string `name:"upload" role:"leader"`
|
||||
remove string `name:"remove" role:"leader"`
|
||||
}
|
||||
|
||||
func (s cert) List(m *ice.Message, arg ...string) { s.ValueList(m, arg).Display("") }
|
||||
func (s cert) Upload(m *ice.Message, arg ...string) {
|
||||
p := m.UploadSave(path.Join(nfs.USR, m.Option(mdb.FIELD), m.Option(model.AUTH_UID)) + nfs.PS)
|
||||
s.Create(m, model.PATH, p, model.AUTH_UID, m.Option(model.AUTH_UID))
|
||||
}
|
||||
func (s cert) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
s.Select(m, model.AUTH_UID, arg[0]).PushAction(s.Remove).Action(s.Upload).Display("").DisplayCSS("")
|
||||
s.Button(m, "", s.Upload)
|
||||
}
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(cert{}) }
|
||||
|
@ -3,7 +3,10 @@ Volcanos(chat.ONIMPORT, {
|
||||
can.onimport.myView(can, msg, function(value) { return [
|
||||
{view: html.TITLE, list: [value.title]},
|
||||
{view: html.STATUS, list: [value.uid.slice(0, 6), can.onimport.timeView(can, value), value.user_name]},
|
||||
{view: html.OUTPUT, list: [value.content]},
|
||||
] })
|
||||
{view: html.OUTPUT, list: [{img: can.misc.Resource(can, value.path)}]},
|
||||
] }, function(event, value) {})
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONACTION, {
|
||||
upload: function(event, can) { can.user.upload(can.request(event, {field: "cert", _handle: ice.TRUE}), can) },
|
||||
})
|
@ -1,6 +1,8 @@
|
||||
package renzhengshouquan
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"shylinux.com/x/ice"
|
||||
"shylinux.com/x/icebergs/base/aaa"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
@ -27,12 +29,12 @@ func (s Table) Inputs(m *ice.Message, arg ...string) {
|
||||
case AuthRoot:
|
||||
m.Push(model.UID, aaa.ROOT).Push(model.NAME, aaa.ROOT)
|
||||
case AuthCity:
|
||||
m.Cmdy(auth{}, s.Select, model.TYPE, AuthRoot)
|
||||
m.Cmdy(Auth{}, s.Select, model.TYPE, AuthRoot)
|
||||
case AuthCompany, AuthPersonal:
|
||||
m.Cmdy(auth{}, s.Select, model.TYPE, AuthCity)
|
||||
m.Cmdy(Auth{}, s.Select, model.TYPE, AuthCity)
|
||||
default:
|
||||
msg := m.Cmd(auth{}, s.Select, model.TYPE, AuthCity, model.NAME, m.Option(model.CITY_NAME))
|
||||
m.Cmdy(auth{}, s.Select, model.TYPE, AuthCompany, model.FROM_UID, msg.Append(model.UID))
|
||||
msg := m.Cmd(Auth{}, s.Select, model.TYPE, AuthCity, model.NAME, m.Option(model.CITY_NAME))
|
||||
m.Cmdy(Auth{}, s.Select, model.TYPE, AuthCompany, model.FROM_UID, msg.Append(model.UID))
|
||||
}
|
||||
m.Cut(model.UID, model.NAME).RenameAppend(model.UID, model.FROM_UID)
|
||||
m.DisplayInputKeyNameIconTitle()
|
||||
@ -42,6 +44,9 @@ func (s Table) Inputs(m *ice.Message, arg ...string) {
|
||||
}
|
||||
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
|
||||
m.RewriteAppend(func(value, key string, index int) string {
|
||||
if _, e := strconv.ParseInt(value, 10, 64); e != nil {
|
||||
return value
|
||||
}
|
||||
switch key {
|
||||
case model.USER_AUTH_ROLE:
|
||||
value = UserAuthRole(kit.Int(value)).String()
|
||||
|
@ -5,6 +5,7 @@ import "shylinux.com/x/mysql-story/src/db"
|
||||
const (
|
||||
UID = "uid"
|
||||
NAME = "name"
|
||||
INFO = "info"
|
||||
TYPE = "type"
|
||||
STATUS = "status"
|
||||
TITLE = "title"
|
||||
@ -24,6 +25,11 @@ const (
|
||||
CITY_UID = "city_uid"
|
||||
CITY_NAME = "city_name"
|
||||
FROM_UID = "from_uid"
|
||||
SERVICE_UID = "service_uid"
|
||||
PLACE_UID = "place_uid"
|
||||
SPACE = "space"
|
||||
INDEX = "index"
|
||||
PATH = "path"
|
||||
)
|
||||
|
||||
type UserAuth struct {
|
||||
@ -32,17 +38,24 @@ type UserAuth struct {
|
||||
}
|
||||
type Auth struct {
|
||||
db.ModelWithUID
|
||||
DashboardUID string `gorm:"type:char(32)"`
|
||||
StorageUID string `gorm:"type:char(32)"`
|
||||
CompanyUID string `gorm:"type:char(32);index"`
|
||||
FromUID string `gorm:"type:char(32);index"`
|
||||
Name string `gorm:"type:varchar(64)"`
|
||||
Info string `gorm:"type:varchar(255)"`
|
||||
Type uint8 `gorm:"default:0"`
|
||||
Status uint8 `gorm:"default:0"`
|
||||
Avatar string `gorm:"type:varchar(255)"`
|
||||
Background string `gorm:"type:varchar(255)"`
|
||||
StorageUID string `gorm:"type:char(32)"`
|
||||
DashboardUID string `gorm:"type:char(32)"`
|
||||
ServiceUID string `gorm:"type:char(32)"`
|
||||
PlaceUID string `gorm:"type:char(32)"`
|
||||
UserUID string `gorm:"type:char(32)"`
|
||||
}
|
||||
type Cert struct {
|
||||
db.ModelContent
|
||||
AuthUID string `gorm:"type:char(32);index"`
|
||||
Path string `gorm:"type:varchar(255)"`
|
||||
}
|
||||
|
||||
func init() { db.CmdModels("", &UserAuth{}, &Auth{}, &Cert{}) }
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
|
||||
type Portal struct {
|
||||
guanlixitong.Portal
|
||||
placeCreate string `name:"placeCreate city_name* company_name* auth_name* auth_type*:select" role:"void"`
|
||||
placeCreate string `name:"placeCreate city_name* company_name* auth_name* auth_info auth_type*:select" role:"void"`
|
||||
}
|
||||
|
||||
func (s Portal) List(m *ice.Message, arg ...string) {
|
||||
@ -29,7 +29,9 @@ func (s Portal) PlaceCreate(m *ice.Message, arg ...string) {
|
||||
from = aaa.ROOT
|
||||
case AuthCity:
|
||||
from = s.findAuthFrom(m, AuthRoot)
|
||||
case AuthCompany, AuthPersonal:
|
||||
case AuthPersonal:
|
||||
from = s.findAuthFrom(m, AuthCity, model.NAME, m.Option(model.CITY_NAME))
|
||||
case AuthCompany:
|
||||
from = s.findAuthFrom(m, AuthCity, model.NAME, m.Option(model.CITY_NAME))
|
||||
case AuthService:
|
||||
if city_uid := s.findAuthFrom(m, AuthCity, model.NAME, m.Option(model.CITY_NAME)); city_uid != "" {
|
||||
@ -40,6 +42,7 @@ func (s Portal) PlaceCreate(m *ice.Message, arg ...string) {
|
||||
return
|
||||
}
|
||||
arg = append(arg, model.FROM_UID, m.Option(model.FROM_UID, from))
|
||||
arg = append(arg, model.USER_UID, m.Option(model.USER_UID))
|
||||
if m.WarnNotRight(AuthType(kit.Int(m.Option(model.AUTH_TYPE))) == AuthRoot && !m.IsTech()) {
|
||||
return
|
||||
}
|
||||
@ -54,9 +57,9 @@ func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message {
|
||||
s.AS(s.Key(s.Place, model.UID), model.AUTH_UID), model.COMPANY_UID,
|
||||
)
|
||||
if len(arg) == 1 {
|
||||
m.Cmdy(s.UserPlace, s.Table.Select, 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 {
|
||||
m.FieldsSetDetail().Cmdy(s.UserPlace, s.Table.Select, model.USER_UID, arg[0], s.Key(s.UserPlace, model.AUTH_UID), arg[1])
|
||||
m.FieldsSetDetail().Cmdy(s.UserPlace, s.Table.Select, s.Key(s.UserPlace, model.USER_UID), arg[0], s.Key(s.UserPlace, model.AUTH_UID), arg[1])
|
||||
} else {
|
||||
return m
|
||||
}
|
||||
@ -65,10 +68,10 @@ func (s Portal) PlaceList(m *ice.Message, arg ...string) *ice.Message {
|
||||
return m
|
||||
}
|
||||
|
||||
func init() { gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(userAuth{}, auth{})}) }
|
||||
func init() { gonganxitong.PortalCmd(Portal{Portal: guanlixitong.NewPortal(userAuth{}, Auth{})}) }
|
||||
|
||||
func (s Portal) findAuthFrom(m *ice.Message, authType AuthType, arg ...string) string {
|
||||
msg := m.Cmd(auth{}, s.Table.Select, model.TYPE, authType, arg)
|
||||
msg := m.Cmd(Auth{}, s.Table.Select, model.TYPE, authType, arg)
|
||||
if m.WarnNotFound(msg.Length() == 0, authType.String()) {
|
||||
return ""
|
||||
}
|
||||
|
@ -1,21 +1,23 @@
|
||||
{
|
||||
"portal": "认证授权",
|
||||
"cert": "上传证件", "auth": "认证授权",
|
||||
"cert": "上传证件", "auth": "认证授权", "profile": "用户名片",
|
||||
"certList": "证件", "memberList": "成员",
|
||||
"issue": "认证", "revoke": "吊销",
|
||||
"style": {
|
||||
"issue": "notice",
|
||||
"revoke": "danger"
|
||||
},
|
||||
"icons": {
|
||||
"auth": "https://img.icons8.com/officel/80/activity-grid.png",
|
||||
"cert": "https://img.icons8.com/officel/80/activity-grid.png"
|
||||
"cert": "https://img.icons8.com/officel/80/activity-grid.png",
|
||||
"profile": "https://img.icons8.com/officel/80/activity-grid.png"
|
||||
},
|
||||
"input": {
|
||||
"My Auth": "我的认证",
|
||||
"user_auth_role": "用户角色",
|
||||
"user_auth_role": "成员角色",
|
||||
"auth_uid": "认证",
|
||||
"auth_name": "认证主体",
|
||||
"auth_type": "主体类型",
|
||||
"auth_type": "认证类型",
|
||||
"auth_status": "认证状态",
|
||||
"from_uid": "认证机构"
|
||||
},
|
||||
@ -39,7 +41,8 @@
|
||||
"company": "公司",
|
||||
"style": {
|
||||
"root": "danger",
|
||||
"city": "danger"
|
||||
"city": "danger",
|
||||
"personal": "danger"
|
||||
},
|
||||
"icons": {
|
||||
"root": "https://img.icons8.com/officel/80/console.png",
|
||||
|
57
src/renzhengshouquan/profile.go
Normal file
57
src/renzhengshouquan/profile.go
Normal file
@ -0,0 +1,57 @@
|
||||
package renzhengshouquan
|
||||
|
||||
import (
|
||||
"path"
|
||||
|
||||
"shylinux.com/x/ice"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/renzhengshouquan/model"
|
||||
)
|
||||
|
||||
type profile struct {
|
||||
Auth
|
||||
order string `data:"3"`
|
||||
modify string `name:"modify info" role:"leader,worker"`
|
||||
upload string `name:"upload" role:"leader,worker"`
|
||||
authList string `name:"authList" role:"void"`
|
||||
memberList string `name:"memberList" role:"void"`
|
||||
systemList string `name:"systemList" role:"void"`
|
||||
}
|
||||
|
||||
func (s profile) Modify(m *ice.Message, arg ...string) {
|
||||
s.Update(m, kit.Dict(m.OptionSimple(model.INFO)), model.UID, m.Option(model.AUTH_UID))
|
||||
}
|
||||
func (s profile) Upload(m *ice.Message, arg ...string) {
|
||||
p := m.UploadSave(path.Join(nfs.USR, m.Option(mdb.FIELD), m.Option(model.AUTH_UID)) + nfs.PS)
|
||||
s.Update(m, kit.Dict(m.Option(mdb.FIELD), p), model.UID, m.Option(model.AUTH_UID))
|
||||
}
|
||||
func (s profile) AuthList(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.Auth, m.Option(model.AUTH_UID))
|
||||
kit.If(s.IsVisitor(m), func() { m.PushAction() })
|
||||
s.RewriteAppend(m)
|
||||
}
|
||||
func (s profile) MemberList(m *ice.Message, arg ...string) {
|
||||
msg := s.Select(m.Spawn(), model.UID, m.Option(model.AUTH_UID))
|
||||
service := s.ServiceList(m, msg.Append(model.PLACE_UID), msg.Append(model.SERVICE_UID))
|
||||
m.Cmdy(web.SPACE, service.Append(model.SPACE), service.Append(model.INDEX), m.ActionKey(), msg.Append(model.PLACE_UID))
|
||||
s.RewriteAppend(m)
|
||||
}
|
||||
func (s profile) SystemList(m *ice.Message, arg ...string) {
|
||||
list := s.SettingProfile(m.Spawn(), arg...).Appendv(model.PLACE_UID)
|
||||
s.FieldsWithCreatedAT(m, s.Auth, kit.TransArgs(kit.Split(m.Config(mdb.FIELDS), ",", ","))...)
|
||||
s.SelectList(m, kit.Simple(model.PLACE_UID, list)...)
|
||||
s.RewriteAppend(m)
|
||||
}
|
||||
func (s profile) List(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 1 {
|
||||
s.Select(m, model.UID, arg[0]).Display("")
|
||||
kit.If(s.IsVisitor(m), func() { m.Action() }, func() { m.Action(s.Modify) })
|
||||
}
|
||||
s.RewriteAppend(m)
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(profile{}) }
|
62
src/renzhengshouquan/profile.js
Normal file
62
src/renzhengshouquan/profile.js
Normal file
@ -0,0 +1,62 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { msg.Option("_share_title", msg.Append(mdb.NAME))
|
||||
if (!can.base.isIn(msg.Option("user_role"), "1", "2", "3")) { delete(can.onaction.updateAvatar), delete(can.onaction.updateBackground) }
|
||||
can.ui = can.page.Appends(can, can._output, [html.HEAD, html.LIST])
|
||||
msg.Table(function(value) {
|
||||
can.page.Append(can, can.ui.head, [{img: can.misc.Resource(can, value.background||"usr/icons/background.jpg"), onclick: function(event) {
|
||||
can.onaction.updateBackground && can.onaction.updateBackground(event, can)
|
||||
}}])
|
||||
can.page.Append(can, can.ui.head, [can.onimport.itemcard(can, {avatar: value.avatar||"usr/icons/avatar.jpg"}, [
|
||||
{view: html.TITLE, list: [value.name, can.onimport.authView(can, value), can.onimport.textView(can, value, "auth_type"), can.onimport.titleAction(can, msg)]},
|
||||
{view: html.STATUS, list: [value.info]},
|
||||
])])
|
||||
})
|
||||
var cmd = msg.Append("auth_type") == "personal"? can.onimport.systemList(can, msg):
|
||||
msg.Append("auth_type") == "service"? can.onimport.memberList(can, msg):
|
||||
can.onimport.authList(can, msg)
|
||||
},
|
||||
authList: function(can, msg) {
|
||||
can.runAction(can.request({}, {auth_uid: msg.Append(UID)}), "authList", [], function(msg) {
|
||||
can.onimport.myView(can, msg, function(value) { value.avatar = value.avatar||"usr/icons/avatar.jpg"
|
||||
return [
|
||||
{view: html.TITLE, list: [value.name, can.onimport.authView(can, value), can.onimport.textView(can, value, "auth_type")]},
|
||||
{view: html.STATUS, list: [value.info]},
|
||||
]
|
||||
}, function(event, value) {
|
||||
can.Option("auth_uid", value.uid), can.Update(event)
|
||||
}, can.ui.list)
|
||||
})
|
||||
},
|
||||
memberList: function(can, msg) {
|
||||
can.runAction(can.request({}, {auth_uid: msg.Append(UID)}), "memberList", [], function(msg) {
|
||||
can.onimport.myView(can, msg, function(value) { value.avatar = value.user_avatar||"usr/icons/avatar.jpg"
|
||||
return [
|
||||
{view: html.TITLE, list: [value.auth_name, can.onimport.authView(can, value), can.onimport.textView(can, value, "auth_type")]},
|
||||
{view: html.STATUS, list: [value.user_info]},
|
||||
]
|
||||
}, function(event, value) {
|
||||
if (value.auth_uid) {
|
||||
can.Option("auth_uid", value.auth_uid), can.Update(event)
|
||||
} else {
|
||||
can.onimport.myStory(can, {index: "web.team.gonganxitong.user", args: [value.user_uid]})
|
||||
}
|
||||
}, can.ui.list)
|
||||
})
|
||||
},
|
||||
systemList: function(can, msg) {
|
||||
can.runAction(can.request({}, {}), "systemList", [msg.Append("user_uid")||msg.Option("user_uid")], function(msg) {
|
||||
can.onimport.myView(can, msg, function(value) { value.avatar = value.avatar||"usr/icons/avatar.jpg"
|
||||
return [
|
||||
{view: html.TITLE, list: [value.name, can.onimport.authView(can, value), can.onimport.textView(can, value, "auth_type")]},
|
||||
{view: html.STATUS, list: [value.info]},
|
||||
]
|
||||
}, function(event, value) {
|
||||
can.Option("auth_uid", value.uid), can.Update(event)
|
||||
}, can.ui.list)
|
||||
})
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONACTION, {
|
||||
updateBackground: function(event, can) { can.user.upload(can.request(event, {field: aaa.BACKGROUND}), can) },
|
||||
updateAvatar: function(event, can) { can.user.upload(can.request(event, {field: aaa.AVATAR}), can) },
|
||||
})
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"portal": "约号系统",
|
||||
"open": "放号", "plan": "约号", "take": "取号", "call": "叫号",
|
||||
"reception": "服务场所", "volume": "服务计划", "schedule": "订单数据", "history": "我的订单", "queueUser": "服务人员",
|
||||
"reception": "服务场所", "volume": "服务计划", "schedule": "订单数据", "history": "我的订单",
|
||||
"expire": "过号", "finish": "完成",
|
||||
"icons": {
|
||||
"open": "https://img.icons8.com/officel/80/open-sign.png",
|
||||
@ -11,8 +11,7 @@
|
||||
"reception": "https://img.icons8.com/officel/80/meeting-room.png",
|
||||
"volume": "https://img.icons8.com/officel/80/combo-chart.png",
|
||||
"schedule": "https://img.icons8.com/officel/80/List-of-parts.png",
|
||||
"history": "https://img.icons8.com/officel/80/order-history.png",
|
||||
"queueUser": "https://img.icons8.com/officel/80/person-at-home.png"
|
||||
"history": "https://img.icons8.com/officel/80/order-history.png"
|
||||
},
|
||||
"style": {
|
||||
"cancel": "danger",
|
||||
@ -23,7 +22,7 @@
|
||||
},
|
||||
"input": {
|
||||
"My Queue": "我的场景",
|
||||
"user_queue_role": "用户角色",
|
||||
"user_queue_role": "成员角色",
|
||||
"queue_uid": "服务场景",
|
||||
"queue_name": "场景名称",
|
||||
"queue_type": "场景类型",
|
||||
|
@ -14,7 +14,7 @@ Volcanos(chat.ONIMPORT, {
|
||||
var _time = {view: html.STATUS, list: [can.user.trans(can, "finish_time:", "结束时间:"), value.end_time]}
|
||||
}
|
||||
return [
|
||||
{view: html.TITLE, list:[value.name||value.user_name, value.schedule_status != "finish" && can.onimport.textView(can, value, "schedule_status"), can.onimport.titleAction(can, value)]},
|
||||
{view: html.TITLE, list:[value.name||value.user_name, can.onimport.textView(can, value), can.onimport.titleAction(can, value)]},
|
||||
{view: html.STATUS, list: [value.uid && value.uid.slice(0, 6), can.onimport.timeView(can, value), value.reception_name]},
|
||||
time, _time,
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user