项目结构:

Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:45
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : jewelry.go
*/
package domain
type Jewelry interface {
Name() string
CalcPrice(weight float64) float64
Quality() string
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:46
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : certificate.go
*/
package domain
type Certificate interface {
Agency() string
Auth() string
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:45
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : coupon.go
*/
package domain
type Coupon interface {
Name() string
Calc(origin float64) float64
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:45
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : craft.go
*/
package domain
type Craft interface {
Name() string
Fee() float64
Process() string
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:45
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : material.go
*/
package domain
type Material interface {
Level() string
Desc() string
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:46
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : order.go
*/
package domain
type OrderStep interface {
Step() string
Exec() string
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:46
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : payment.go
*/
package domain
type Payment interface {
Name() string
Pay() string
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:46
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : role.go
*/
package domain
type Role interface {
Role() string
Perm() string
}
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:45
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : registry.go
*/
package registry
import (
"godesginpattern/registry/domain"
"sync"
)
var (
JewelryRegistry sync.Map
CraftRegistry sync.Map
CouponRegistry sync.Map
MaterialRegistry sync.Map
CertRegistry sync.Map
PaymentRegistry sync.Map
RoleRegistry sync.Map
OrderStepRegistry sync.Map
)
func RegisterJewelry(name string, f func() domain.Jewelry) { JewelryRegistry.Store(name, f) }
func RegisterCraft(name string, f func() domain.Craft) { CraftRegistry.Store(name, f) }
func RegisterCoupon(name string, f func() domain.Coupon) { CouponRegistry.Store(name, f) }
func RegisterMaterial(name string, f func() domain.Material) { MaterialRegistry.Store(name, f) }
func RegisterCert(name string, f func() domain.Certificate) { CertRegistry.Store(name, f) }
func RegisterPayment(name string, f func() domain.Payment) { PaymentRegistry.Store(name, f) }
func RegisterRole(name string, f func() domain.Role) { RoleRegistry.Store(name, f) }
func RegisterOrderStep(name string, f func() domain.OrderStep) { OrderStepRegistry.Store(name, f) }
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:00
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : diamond.go
*/
package jewelry
import (
"fmt"
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type Diamond struct{}
func (d *Diamond) Name() string { return "钻石" }
func (d *Diamond) CalcPrice(w float64) float64 { return w * 10000 }
func (d *Diamond) Quality() string { return "4C标准" }
func init() {
fmt.Println("✅ 钻石注册成功")
registry.RegisterJewelry("diamond", func() domain.Jewelry {
return &Diamond{}
})
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:47
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : gold.go
*/
package jewelry
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type Gold struct{}
func (g *Gold) Name() string { return "黄金" }
func (g *Gold) CalcPrice(w float64) float64 { return w*600 + 50 }
func (g *Gold) Quality() string { return "足金999" }
func init() {
registry.RegisterJewelry("gold", func() domain.Jewelry {
return &Gold{}
})
}
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:08
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : jade.go
*/
package jewelry
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type Jade struct{}
func (j *Jade) Name() string { return "翡翠" }
func (j *Jade) CalcPrice(w float64) float64 { return w*5000 + 100 }
func (j *Jade) Quality() string { return "A货翡翠" }
func init() { registry.RegisterJewelry("jade", func() domain.Jewelry { return &Jade{} }) }
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:07
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : pearl.go
*/
package jewelry
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type Pearl struct{}
func (p *Pearl) Name() string { return "珍珠" }
func (p *Pearl) CalcPrice(w float64) float64 { return w*200 + 20 }
func (p *Pearl) Quality() string { return "海水珍珠" }
func init() { registry.RegisterJewelry("pearl", func() domain.Jewelry { return &Pearl{} }) }
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:07
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : platinum.go
*/
package jewelry
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type Platinum struct{}
func (p *Platinum) Name() string { return "铂金" }
func (p *Platinum) CalcPrice(w float64) float64 { return w*300 + 30 }
func (p *Platinum) Quality() string { return "PT950" }
func init() { registry.RegisterJewelry("platinum", func() domain.Jewelry { return &Platinum{} }) }
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:11
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : 18k.go
*/
package material
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type K18 struct{}
func (m *K18) Level() string { return "18K金" }
func (m *K18) Desc() string { return "75%黄金,硬度高" }
func init() { registry.RegisterMaterial("18k", func() domain.Material { return &K18{} }) }
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:12
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : 24k.go
*/
package material
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type K24 struct{}
func (m *K24) Level() string { return "24K金" }
func (m *K24) Desc() string { return "足金999纯金" }
func init() { registry.RegisterMaterial("24k", func() domain.Material { return &K24{} }) }
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:12
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : 24k.go
*/
package material
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type K24 struct{}
func (m *K24) Level() string { return "24K金" }
func (m *K24) Desc() string { return "足金999纯金" }
func init() { registry.RegisterMaterial("24k", func() domain.Material { return &K24{} }) }
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:02
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : pt950.go
*/
package material
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type PT950 struct{}
func (m *PT950) Level() string { return "PT950铂金" }
func (m *PT950) Desc() string { return "95%铂金材质" }
func init() { registry.RegisterMaterial("pt950", func() domain.Material { return &PT950{} }) }
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 21:12
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : pt999.go
*/
package material
import (
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
type PT999 struct{}
func (m *PT999) Level() string { return "PT999铂金" }
func (m *PT999) Desc() string { return "99.9%高纯铂金" }
func init() { registry.RegisterMaterial("pt999", func() domain.Material { return &PT999{} }) }
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:47
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : order_service.go
*/
package biz
import (
"fmt"
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
)
func getJewelry(name string) domain.Jewelry {
jf, ok := registry.JewelryRegistry.Load(name)
if !ok {
return nil
}
fn, ok := jf.(func() domain.Jewelry)
if !ok {
return nil
}
return fn()
}
func getCraft(name string) domain.Craft {
cf, ok := registry.CraftRegistry.Load(name)
if !ok {
return nil
}
fn, ok := cf.(func() domain.Craft)
if !ok {
return nil
}
return fn()
}
func getMaterial(name string) domain.Material {
mf, ok := registry.MaterialRegistry.Load(name)
if !ok {
return nil
}
fn, ok := mf.(func() domain.Material)
if !ok {
return nil
}
return fn()
}
func getCert(name string) domain.Certificate {
cf, ok := registry.CertRegistry.Load(name)
if !ok {
return nil
}
fn, ok := cf.(func() domain.Certificate)
if !ok {
return nil
}
return fn()
}
func getCoupon(name string) domain.Coupon {
cf, ok := registry.CouponRegistry.Load(name)
if !ok {
return nil
}
fn, ok := cf.(func() domain.Coupon)
if !ok {
return nil
}
return fn()
}
func getPayment(name string) domain.Payment {
pf, ok := registry.PaymentRegistry.Load(name)
if !ok {
return nil
}
fn, ok := pf.(func() domain.Payment)
if !ok {
return nil
}
return fn()
}
func getRole(name string) domain.Role {
rf, ok := registry.RoleRegistry.Load(name)
if !ok {
return nil
}
fn, ok := rf.(func() domain.Role)
if !ok {
return nil
}
return fn()
}
func getOrderStep(name string) domain.OrderStep {
sf, ok := registry.OrderStepRegistry.Load(name)
if !ok {
return nil
}
fn, ok := sf.(func() domain.OrderStep)
if !ok {
return nil
}
return fn()
}
func RunOrderFlow() {
fmt.Println("======= 企业级珠宝订单系统 =======")
jewelry := getJewelry("diamond")
if jewelry == nil {
fmt.Println("❌ 珠宝未加载")
return
}
craft := getCraft("inlay")
mat := getMaterial("pt950")
cert := getCert("ngtc")
coupon := getCoupon("full")
payment := getPayment("wechat")
role := getRole("manager")
fmt.Printf("✅ 珠宝:%s | 10克价格:%.0f | 质检:%s\n",
jewelry.Name(), jewelry.CalcPrice(10), jewelry.Quality())
fmt.Printf("✅ 工艺:%s | 工费:%.0f | 处理:%s\n",
craft.Name(), craft.Fee(), craft.Process())
fmt.Printf("✅ 材质:%s | %s\n", mat.Level(), mat.Desc())
fmt.Printf("✅ 证书:%s | %s\n", cert.Agency(), cert.Auth())
origin := jewelry.CalcPrice(10) + craft.Fee()
final := coupon.Calc(origin)
fmt.Printf("✅ 优惠:%s | 原价:%.0f → 实价:%.0f\n",
coupon.Name(), origin, final)
fmt.Printf("✅ 支付:%s | %s\n", payment.Name(), payment.Pay())
fmt.Printf("✅ 操作员:%s | %s\n", role.Role(), role.Perm())
fmt.Println("\n------- 订单执行流程 -------")
steps := []string{"create", "check", "deliver", "after"}
for _, s := range steps {
step := getOrderStep(s)
if step != nil {
fmt.Printf("✅ %s:%s\n", step.Step(), step.Exec())
}
}
fmt.Println("\n========== 交易完成 ==========")
}
调用:
Go
/*
# 版权所有 2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Registry Pattern注册模式
# Author : geovindu,Geovin Du 涂聚文.
# IDE : goLang 2024.3.6 go 26.2
# os : windows 10
# database : mysql 9.0 sql server 2019, postgreSQL 17.0 Oracle 21c Neo4j
# Datetime : 2026/4/27 19:47
# User : geovindu
# Product : GoLand
# Project : godesginpattern
# File : registrybll.go
Registry/
├── go.mod // 项目依赖
├── main.go // 项目入口
├── config/ // 配置
├── internal/ // 内部业务(核心)
│ ├── domain/ // 领域接口(定义标准)
│ │ ├── jewelry.go // 珠宝接口
│ │ ├── craft.go // 工艺接口
│ │ ├── coupon.go // 优惠券接口
│ │ ├── material.go // 材质接口
│ │ ├── certificate.go // 证书接口
│ │ ├── payment.go // 支付接口
│ │ ├── role.go // 角色权限接口
│ │ └── order.go // 订单流程接口
│ ├── registry/ // 全局注册中心(唯一入口)
│ │ └── registry.go // 所有注册器
│ ├── service/ // 业务实现(职责单一)
│ │ ├── jewelry/
│ │ ├── craft/
│ │ ├── coupon/
│ │ ├── material/
│ │ ├── certificate/
│ │ ├── payment/
│ │ ├── role/
│ │ └── order/
│ └── biz/ // 业务组合服务
│ └── order_service.go // 订单业务编排
└── cmmon/ // 公共工具
*/
package bll
import (
"godesginpattern/registry/biz"
"godesginpattern/registry/domain"
"godesginpattern/registry/registry"
// 👇 👇 👇 关键在这里!!!
// 强制导入所有 service,让 init() 执行
// 这样 /service 下的所有文件 100% 生效!!!
_ "godesginpattern/registry/service/certificate"
_ "godesginpattern/registry/service/coupon"
_ "godesginpattern/registry/service/craft"
_ "godesginpattern/registry/service/jewelry"
_ "godesginpattern/registry/service/material"
_ "godesginpattern/registry/service/order"
_ "godesginpattern/registry/service/payment"
_ "godesginpattern/registry/service/role"
)
// 手动注册所有模块,100% 成功
func registerAll() {
// 珠宝
registry.RegisterJewelry("diamond", func() domain.Jewelry { return &Diamond{} })
registry.RegisterJewelry("gold", func() domain.Jewelry { return &Gold{} })
// 工艺
registry.RegisterCraft("inlay", func() domain.Craft { return &Inlay{} })
// 材质
registry.RegisterMaterial("pt950", func() domain.Material { return &PT950{} })
// 证书
registry.RegisterCert("ngtc", func() domain.Certificate { return &NGTC{} })
// 优惠券
registry.RegisterCoupon("full", func() domain.Coupon { return &FullReduce{} })
// 支付
registry.RegisterPayment("wechat", func() domain.Payment { return &WeChatPay{} })
// 角色
registry.RegisterRole("manager", func() domain.Role { return &Manager{} })
// 订单流程
registry.RegisterOrderStep("create", func() domain.OrderStep { return &CreateOrder{} })
registry.RegisterOrderStep("check", func() domain.OrderStep { return &QualityCheck{} })
registry.RegisterOrderStep("deliver", func() domain.OrderStep { return &Deliver{} })
registry.RegisterOrderStep("after", func() domain.OrderStep { return &AfterSale{} })
}
// ==================== 临时定义,确保注册成功 ====================
type Diamond struct{}
func (d *Diamond) Name() string { return "钻石" }
func (d *Diamond) CalcPrice(w float64) float64 { return w * 10000 }
func (d *Diamond) Quality() string { return "4C标准" }
type Gold struct{}
func (g *Gold) Name() string { return "黄金" }
func (g *Gold) CalcPrice(w float64) float64 { return w*600 + 50 }
func (g *Gold) Quality() string { return "足金999" }
type Inlay struct{}
func (i *Inlay) Name() string { return "镶嵌" }
func (i *Inlay) Fee() float64 { return 150 }
func (i *Inlay) Process() string { return "钻石爪镶" }
type PT950 struct{}
func (m *PT950) Level() string { return "PT950铂金" }
func (m *PT950) Desc() string { return "95%铂金材质" }
type NGTC struct{}
func (c *NGTC) Agency() string { return "NGTC国检" }
func (c *NGTC) Auth() string { return "国家珠宝玉石检验中心" }
type FullReduce struct{}
func (f *FullReduce) Name() string { return "满3000减300" }
func (f *FullReduce) Calc(o float64) float64 {
if o >= 3000 {
return o - 300
}
return o
}
type WeChatPay struct{}
func (p *WeChatPay) Name() string { return "微信支付" }
func (p *WeChatPay) Pay() string { return "扫码支付" }
type Manager struct{}
func (r *Manager) Role() string { return "店长" }
func (r *Manager) Perm() string { return "全权限" }
type CreateOrder struct{}
func (c *CreateOrder) Step() string { return "创建订单" }
func (c *CreateOrder) Exec() string { return "支付完成" }
type QualityCheck struct{}
func (q *QualityCheck) Step() string { return "质检" }
func (q *QualityCheck) Exec() string { return "NGTC发证" }
type Deliver struct{}
func (d *Deliver) Step() string { return "发货" }
func (d *Deliver) Exec() string { return "顺丰保价" }
type AfterSale struct{}
func (a *AfterSale) Step() string { return "售后" }
func (a *AfterSale) Exec() string { return "终身保养" }
// =================================================================
func RegistryMain() {
//registerAll() // 强制注册
biz.RunOrderFlow() // 运行流程
}
输出:
