增加租户套餐

This commit is contained in:
2026-09-15 17:28:08 +08:00
parent a82b300b1a
commit 71a14c46f9
37 changed files with 3855 additions and 178 deletions
+5
View File
@@ -35,6 +35,11 @@ func Init(_ string) {
orm.RegisterModel(
new(SystemTenant),
new(SystemTenantUser),
// 租户套餐 / 用户数配额(docs/sql/create_tenant_package.sql)
new(SystemTenantPackage),
new(SystemTenantPackageModule),
new(SystemTenantUserQuotaPackage),
new(SystemTenantQuotaOrder),
new(BackendOrganization),
new(BackendEmployee),
new(BackendPosition),
+8 -4
View File
@@ -13,10 +13,14 @@ type SystemTenant struct {
Address *string `orm:"column(address);size(255);null" json:"address"`
Worktime *string `orm:"column(worktime);size(255);null" json:"worktime"`
Status int8 `orm:"column(status);default(1)" json:"status"`
Remark *string `orm:"column(remark);size(512);null" json:"remark"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);auto_now;type(datetime)" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
// PackageID 套餐ID:关联 yz_system_tenant_package(id),0 表示未绑定(视为默认套餐)
PackageID uint64 `orm:"column(package_id);default(0)" json:"package_id"`
// UserQuota 用户数上限:默认 20,增购后累加。租户用户数达到上限后不允许再新增账号。
UserQuota int `orm:"column(user_quota);default(20)" json:"user_quota"`
Remark *string `orm:"column(remark);size(512);null" json:"remark"`
CreateTime time.Time `orm:"column(create_time);auto_now_add;type(datetime)" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);auto_now;type(datetime)" json:"update_time"`
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
}
func (m *SystemTenant) TableName() string {
+80
View File
@@ -0,0 +1,80 @@
package models
import "time"
// SystemTenantPackage 租户套餐表 yz_system_tenant_package
// 套餐 = 可开通的功能模块集合 + 用户数配额(含用户数 / 单用户增购价)
type SystemTenantPackage struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
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"`
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"`
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 *SystemTenantPackage) TableName() string {
return "yz_system_tenant_package"
}
// SystemTenantPackageModule 套餐-功能模块关联表 yz_system_tenant_package_module
// module_code 对应 yz_system_modules.code(如 erp / oa / crm / cms)
type SystemTenantPackageModule struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
PackageID uint64 `orm:"column(package_id)" json:"package_id"`
ModuleCode string `orm:"column(module_code);size(64)" json:"module_code"`
ModuleName string `orm:"column(module_name);size(64)" json:"module_name"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
}
func (m *SystemTenantPackageModule) TableName() string {
return "yz_system_tenant_package_module"
}
// SystemTenantUserQuotaPackage 用户数加购套餐表 yz_system_tenant_user_quota_package
// 平台可维护的规格,如「5人套餐 / 500元」;租户增购时选择该规格即增加对应人数。
type SystemTenantUserQuotaPackage struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
Name string `orm:"column(name);size(64)" json:"name"`
UserCount int `orm:"column(user_count);default(0)" json:"user_count"`
Price float64 `orm:"column(price);digits(10);decimals(2)" json:"price"`
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 *SystemTenantUserQuotaPackage) TableName() string {
return "yz_system_tenant_user_quota_package"
}
// SystemTenantQuotaOrder 租户用户数增购记录表 yz_system_tenant_quota_order
type SystemTenantQuotaOrder struct {
ID uint64 `orm:"column(id);pk;auto" json:"id"`
Tid uint64 `orm:"column(tid)" json:"tid"`
Type int8 `orm:"column(type);default(1)" json:"type"` // 1单个增购 2套餐增购
QuotaPackageID uint64 `orm:"column(quota_package_id);default(0)" json:"quota_package_id"`
PackageName string `orm:"column(package_name);size(64)" json:"package_name"`
UserCount int `orm:"column(user_count);default(0)" json:"user_count"`
UnitPrice float64 `orm:"column(unit_price);digits(10);decimals(2)" json:"unit_price"`
Amount float64 `orm:"column(amount);digits(10);decimals(2)" json:"amount"`
QuotaBefore int `orm:"column(quota_before);default(0)" json:"quota_before"`
QuotaAfter int `orm:"column(quota_after);default(0)" json:"quota_after"`
Operator string `orm:"column(operator);size(64)" json:"operator"`
Remark string `orm:"column(remark);size(255)" json:"remark"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
}
func (m *SystemTenantQuotaOrder) TableName() string {
return "yz_system_tenant_quota_order"
}