增加功能报价

This commit is contained in:
2026-09-16 00:22:17 +08:00
parent 71a14c46f9
commit 60b2658d4b
32 changed files with 3578 additions and 77 deletions
+4
View File
@@ -40,6 +40,10 @@ func Init(_ string) {
new(SystemTenantPackageModule),
new(SystemTenantUserQuotaPackage),
new(SystemTenantQuotaOrder),
// 产品定价(docs/sql/create_platform_product_pricing.sql)
new(PlatformProduct),
new(PlatformProductFeature),
new(PlatformProductOrder),
new(BackendOrganization),
new(BackendEmployee),
new(BackendPosition),
+69
View File
@@ -0,0 +1,69 @@
package models
import "time"
// =============================================================
// 产品定价模型(表结构见 docs/sql/create_platform_product_pricing.sql)
// 产品(名称/编码/价格/关联功能/上下架) -> 功能节点树 -> 购买订单
// =============================================================
// PlatformProduct 产品 yz_platform_product
type PlatformProduct struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
Code string `orm:"column(code);size(64)" json:"code"`
Name string `orm:"column(name);size(128)" json:"name"`
Price float64 `orm:"column(price);digits(10);decimals(2)" json:"price"`
ModuleCode string `orm:"column(module_code);size(64)" json:"module_code"`
Sort int `orm:"column(sort);default(0)" json:"sort"`
Status int8 `orm:"column(status);default(1)" json:"status"`
Remark string `orm:"column(remark);size(255)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *PlatformProduct) TableName() string { return "yz_platform_product" }
// PlatformProductFeature 产品功能节点(树形,pid=0 为顶级) yz_platform_product_feature
type PlatformProductFeature struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
ProductID uint64 `orm:"column(product_id)" json:"product_id"`
Pid uint64 `orm:"column(pid)" json:"pid"`
Title string `orm:"column(title);size(128)" json:"title"`
Description string `orm:"column(description);size(500)" json:"description"`
Sort int `orm:"column(sort);default(0)" json:"sort"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
}
func (m *PlatformProductFeature) TableName() string { return "yz_platform_product_feature" }
// 购买订单状态
const (
ProductOrderStatusPending = "pending" // 待支付
ProductOrderStatusPaid = "paid" // 已支付(待开通)
ProductOrderStatusActivated = "activated" // 已开通
ProductOrderStatusClosed = "closed" // 已关闭
)
// PlatformProductOrder 产品购买订单 yz_platform_product_order
type PlatformProductOrder struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
OrderNo string `orm:"column(order_no);size(40)" json:"order_no"`
Tid uint64 `orm:"column(tid)" json:"tid"`
TenantName string `orm:"column(tenant_name);size(128)" json:"tenant_name"`
ProductID uint64 `orm:"column(product_id)" json:"product_id"`
ProductCode string `orm:"column(product_code);size(64)" json:"product_code"`
ProductName string `orm:"column(product_name);size(128)" json:"product_name"`
Amount float64 `orm:"column(amount);digits(10);decimals(2)" json:"amount"`
PackageID uint64 `orm:"column(package_id)" json:"package_id"`
PayNo string `orm:"column(pay_no);size(40)" json:"pay_no"`
Channel string `orm:"column(channel);size(32)" json:"channel"`
Status string `orm:"column(status);size(20);default(pending)" json:"status"`
ActivateTime *time.Time `orm:"column(activate_time);type(datetime);null" json:"activate_time"`
Remark string `orm:"column(remark);size(255)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *PlatformProductOrder) TableName() string { return "yz_platform_product_order" }
+2
View File
@@ -15,6 +15,8 @@ type SystemTenant struct {
Status int8 `orm:"column(status);default(1)" json:"status"`
// PackageID 套餐ID:关联 yz_system_tenant_package(id),0 表示未绑定(视为默认套餐)
PackageID uint64 `orm:"column(package_id);default(0)" json:"package_id"`
// PackageExpireTime 套餐到期时间(NULL-永久有效);超过时效自动切换基础套餐
PackageExpireTime *time.Time `orm:"column(package_expire_time);type(datetime);null" json:"package_expire_time"`
// UserQuota 用户数上限:默认 20,增购后累加。租户用户数达到上限后不允许再新增账号。
UserQuota int `orm:"column(user_quota);default(20)" json:"user_quota"`
Remark *string `orm:"column(remark);size(512);null" json:"remark"`
+2 -1
View File
@@ -9,7 +9,8 @@ type SystemTenantPackage struct {
Name string `orm:"column(name);size(64)" json:"name"`
Code string `orm:"column(code);size(64)" json:"code"`
Description string `orm:"column(description);size(500)" json:"description"`
Price float64 `orm:"column(price);digits(10);decimals(2)" json:"price"`
Price float64 `orm:"column(price);digits(10);decimals(2)" json:"price"` // 套餐售价(元/年,按有效时长一次性计费)
DurationDays int `orm:"column(duration_days);default(365)" json:"duration_days"` // 套餐有效时长(天),365=按年计费;到期后租户自动切换基础套餐
UserQuota int `orm:"column(user_quota);default(20)" json:"user_quota"`
ExtraUserPrice float64 `orm:"column(extra_user_price);digits(10);decimals(2)" json:"extra_user_price"`
IsDefault int8 `orm:"column(is_default);default(0)" json:"is_default"`