Files
huang a36e4a79c0 实现用户和组织模型(店铺、企业、个人客户)
核心功能:
- 实现 7 级店铺层级体系(Shop 模型 + 层级校验)
- 实现企业管理模型(Enterprise 模型)
- 实现个人客户管理模型(PersonalCustomer 模型)
- 重构 Account 模型关联关系(基于 EnterpriseID 而非 ParentID)
- 完整的 Store 层和 Service 层实现
- 递归查询下级店铺功能(含 Redis 缓存)
- 全面的单元测试覆盖(Shop/Enterprise/PersonalCustomer Store + Shop Service)

技术要点:
- 显式指定所有 GORM 模型的数据库字段名(column: 标签)
- 统一的字段命名规范(数据库用 snake_case,Go 用 PascalCase)
- 完整的中文字段注释和业务逻辑说明
- 100% 测试覆盖(20+ 测试用例全部通过)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 18:02:46 +08:00

28 lines
1.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package model
import (
"gorm.io/gorm"
)
// Shop 店铺模型
type Shop struct {
gorm.Model
BaseModel `gorm:"embedded"`
ShopName string `gorm:"column:shop_name;type:varchar(100);not null;comment:店铺名称" json:"shop_name"`
ShopCode string `gorm:"column:shop_code;type:varchar(50);uniqueIndex:idx_shop_code,where:deleted_at IS NULL;comment:店铺编号" json:"shop_code"`
ParentID *uint `gorm:"column:parent_id;index;comment:上级店铺IDNULL表示一级代理" json:"parent_id,omitempty"`
Level int `gorm:"column:level;type:int;not null;default:1;comment:层级1-7" json:"level"`
ContactName string `gorm:"column:contact_name;type:varchar(50);comment:联系人姓名" json:"contact_name"`
ContactPhone string `gorm:"column:contact_phone;type:varchar(20);comment:联系人电话" json:"contact_phone"`
Province string `gorm:"column:province;type:varchar(50);comment:省份" json:"province"`
City string `gorm:"column:city;type:varchar(50);comment:城市" json:"city"`
District string `gorm:"column:district;type:varchar(50);comment:区县" json:"district"`
Address string `gorm:"column:address;type:varchar(255);comment:详细地址" json:"address"`
Status int `gorm:"column:status;type:int;not null;default:1;comment:状态 0=禁用 1=启用" json:"status"`
}
// TableName 指定表名
func (Shop) TableName() string {
return "tb_shop"
}