chore: wip

This commit is contained in:
tangtanglove
2023-05-27 14:37:10 +08:00
parent bfdcd5361d
commit 065afcb516
10 changed files with 354 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ package main
import (
"github.com/quarkcms/quark-go/pkg/app/handler/admin"
"github.com/quarkcms/quark-go/pkg/app/handler/miniapp"
"github.com/quarkcms/quark-go/pkg/app/handler/mix"
"github.com/quarkcms/quark-go/pkg/app/handler/tool"
"github.com/quarkcms/quark-go/pkg/app/install"
@@ -25,6 +26,9 @@ func main() {
// 加载Mix服务
providers = append(providers, mix.Providers...)
// 加载MiniApp服务
providers = append(providers, miniapp.Providers...)
// 加载工具服务
providers = append(providers, tool.Providers...)

View File

View File

View File

@@ -0,0 +1,35 @@
package pages
import (
"github.com/quarkcms/quark-go/pkg/builder"
"github.com/quarkcms/quark-go/pkg/builder/template/miniapppage"
"github.com/quarkcms/quark-go/pkg/component/miniapp/navbar"
"github.com/quarkcms/quark-go/pkg/component/miniapp/tabbar"
)
type Index struct {
miniapppage.Template
}
// 初始化
func (p *Index) Init() interface{} {
// 初始化模板
p.TemplateInit()
return p
}
// 头部导航
func (p *Index) Navbar(ctx *builder.Context, navbar *navbar.Component) interface{} {
return navbar.SetTitle("首页")
}
// 组件渲染
func (p *Index) Content(ctx *builder.Context) interface{} {
return "Hello World!"
}
// 底部导航
func (p *Index) Tabbar(ctx *builder.Context, tabbar *tabbar.Component) interface{} {
return tabbar.SetBottom(true)
}

View File

@@ -0,0 +1,8 @@
package miniapp
import "github.com/quarkcms/quark-go/pkg/app/handler/miniapp/pages"
// 注册服务
var Providers = []interface{}{
&pages.Index{},
}

View File

@@ -0,0 +1,105 @@
package miniapppage
import (
"reflect"
"github.com/quarkcms/quark-go/pkg/builder"
"github.com/quarkcms/quark-go/pkg/builder/template"
"github.com/quarkcms/quark-go/pkg/component/miniapp/navbar"
"github.com/quarkcms/quark-go/pkg/component/miniapp/page"
"github.com/quarkcms/quark-go/pkg/component/miniapp/tabbar"
"github.com/quarkcms/quark-go/pkg/dal/db"
)
// 后台登录模板
type Template struct {
template.Template
Title string
Style string
}
// 初始化
func (p *Template) Init() interface{} {
p.TemplateInit()
return p
}
// 初始化模板
func (p *Template) TemplateInit() interface{} {
// 初始化数据对象
p.DB = db.Client
// 注册路由映射
p.GET("/api/miniapp/page/:resource/index", p.Render) // 渲染页面路由
// 标题
p.Title = "QuarkGo"
return p
}
// 头部导航
func (p *Template) Navbar(ctx *builder.Context, navbar *navbar.Component) interface{} {
return nil
}
// 内容
func (p *Template) Content(ctx *builder.Context) interface{} {
return nil
}
// 底部导航
func (p *Template) Tabbar(ctx *builder.Context, tabbar *tabbar.Component) interface{} {
return nil
}
// 组件渲染
func (p *Template) Render(ctx *builder.Context) error {
var (
components []interface{}
)
// 标题
title := reflect.
ValueOf(ctx.Template).
Elem().
FieldByName("Title").
String()
// 导航
navbar := ctx.Template.(interface {
Navbar(ctx *builder.Context, navbar *navbar.Component) interface{}
}).Navbar(ctx, navbar.New())
// 底部菜单
tabbar := ctx.Template.(interface {
Tabbar(ctx *builder.Context, tabbar *tabbar.Component) interface{}
}).Tabbar(ctx, tabbar.New())
// 样式
style := reflect.
ValueOf(ctx.Template).
Elem().
FieldByName("Style").
String()
// 内容
content := ctx.Template.(interface {
Content(ctx *builder.Context) interface{}
}).Content(ctx)
components = append(components, content)
// 组件
component := (&page.Component{}).
Init().
SetTitle(title).
SetNavbar(navbar).
SetTabbar(tabbar).
SetStyle(style).
SetContent(components).
JsonSerialize()
return ctx.JSON(200, component)
}

View File

@@ -0,0 +1,37 @@
package component
import (
"crypto/md5"
"encoding/hex"
"github.com/go-basic/uuid"
)
type Element struct {
Key string `json:"key"`
ComponentKey string `json:"componentKey"`
Component string `json:"component"`
Style interface{} `json:"style"`
}
const DEFAULT_KEY = ""
const DEFAULT_CRYPT = true
// 设置Key
func (p *Element) SetKey(key string, crypt bool) *Element {
if key == "" {
key = uuid.New()
}
if crypt {
h := md5.New()
h.Write([]byte(key))
key = hex.EncodeToString(h.Sum(nil))
}
p.Key = key
p.ComponentKey = key
return p
}

View File

@@ -0,0 +1,56 @@
package navbar
import "github.com/quarkcms/quark-go/pkg/component/miniapp/component"
type Component struct {
component.Element
Title string `json:"title"`
LeftText string `json:"leftText"`
Desc string `json:"desc"`
LeftShow bool `json:"leftShow"`
TitleIcon bool `json:"titleIcon"`
Border bool `json:"border"`
Fixed bool `json:"fixed"`
Placeholder bool `json:"placeholder"`
SafeAreaInsetTop bool `json:"safeAreaInsetTop"`
ZIndex int `json:"zIndex"`
}
// 初始化组件
func New() *Component {
return (&Component{}).Init()
}
// 初始化
func (p *Component) Init() *Component {
p.Component = "navbar"
p.SetKey("navbar", component.DEFAULT_CRYPT)
return p
}
// Set style.
func (p *Component) SetStyle(style interface{}) *Component {
p.Style = style
return p
}
// 标题
func (p *Component) SetTitle(title string) *Component {
p.Title = title
return p
}
// 左侧文案
func (p *Component) SetLeftText(leftText string) *Component {
p.LeftText = leftText
return p
}
// 组件json序列化
func (p *Component) JsonSerialize() *Component {
p.Component = "navbar"
return p
}

View File

@@ -0,0 +1,62 @@
package page
import "github.com/quarkcms/quark-go/pkg/component/miniapp/component"
type Component struct {
component.Element
Title string `json:"title"`
Navbar interface{} `json:"navbar"`
Content interface{} `json:"content"`
Tabbar interface{} `json:"tabbar"`
}
// 初始化组件
func New() *Component {
return (&Component{}).Init()
}
// 初始化
func (p *Component) Init() *Component {
p.Component = "page"
p.SetKey("page", component.DEFAULT_CRYPT)
return p
}
// Set style.
func (p *Component) SetStyle(style interface{}) *Component {
p.Style = style
return p
}
// 标题
func (p *Component) SetTitle(title string) *Component {
p.Title = title
return p
}
// 头部导航
func (p *Component) SetNavbar(navbar interface{}) *Component {
p.Navbar = navbar
return p
}
// 内容
func (p *Component) SetContent(content interface{}) *Component {
p.Content = content
return p
}
// 底部导航
func (p *Component) SetTabbar(tabbar interface{}) *Component {
p.Tabbar = tabbar
return p
}
// 组件json序列化
func (p *Component) JsonSerialize() *Component {
p.Component = "page"
return p
}

View File

@@ -0,0 +1,47 @@
package tabbar
import "github.com/quarkcms/quark-go/pkg/component/miniapp/component"
type Component struct {
component.Element
Bottom bool `json:"bottom"`
UnactiveColor string `json:"unactiveColor"`
ActiveColor string `json:"activeColor"`
SafeAreaInsetBottom bool `json:"safeAreaInsetBottom"`
Placeholder bool `json:"placeholder"`
Items interface{} `json:"items"`
}
// 初始化组件
func New() *Component {
return (&Component{}).Init()
}
// 初始化
func (p *Component) Init() *Component {
p.Component = "tabbar"
p.SetKey("tabbar", component.DEFAULT_CRYPT)
return p
}
// Set style.
func (p *Component) SetStyle(style interface{}) *Component {
p.Style = style
return p
}
// 是否固定在页面底部
func (p *Component) SetBottom(bottom bool) *Component {
p.Bottom = bottom
return p
}
// 组件json序列化
func (p *Component) JsonSerialize() *Component {
p.Component = "tabbar"
return p
}