refactor platform logic and add gasorder domain

This commit is contained in:
david
2026-07-28 10:42:26 +08:00
parent 8c6d52cf8c
commit 899fc6186b
44 changed files with 1636 additions and 1446 deletions

View File

@@ -1,14 +0,0 @@
package models
import "git.apinb.com/bsm-sdk/core/database"
// DeliveryTask 对应 delivery_task保存配送履约任务。
type DeliveryTask struct {
Entity // 公共实体字段
EcOrderID uint64 `gorm:"column:ec_order_id;not null;index" json:"ec_order_id"` // ec_order_id 业务字段
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;default:0;index" json:"staff_account_id"` // staff_account_id 业务字段
DeliveryPointID uint64 `gorm:"column:delivery_point_id;not null;index" json:"delivery_point_id"` // delivery_point_id 业务字段
}
func init() { database.AppendMigrate(&DeliveryTask{}) }
func (table *DeliveryTask) TableName() string { return "delivery_task" }

View File

@@ -1,17 +0,0 @@
package models
import (
"git.apinb.com/bsm-sdk/core/database"
"time"
)
// DeliveryTrack 对应 delivery_track保存配送轨迹摘要。
type DeliveryTrack struct {
Entity // 公共实体字段
DeliveryTaskID uint64 `gorm:"column:delivery_task_id;not null;index" json:"delivery_task_id"` // delivery_task_id 业务字段
StartedAt *time.Time `gorm:"column:started_at;type:timestamptz" json:"started_at"` // started_at 业务字段
CompletedAt *time.Time `gorm:"column:completed_at;type:timestamptz" json:"completed_at"` // completed_at 业务字段
}
func init() { database.AppendMigrate(&DeliveryTrack{}) }
func (table *DeliveryTrack) TableName() string { return "delivery_track" }

View File

@@ -1,19 +0,0 @@
package models
import (
"git.apinb.com/bsm-sdk/core/database"
"time"
)
// DeliveryTrackPoint 对应 delivery_track_point保存配送节点和位置。
type DeliveryTrackPoint struct {
Entity // 公共实体字段
DeliveryTrackID uint64 `gorm:"column:delivery_track_id;not null;index" json:"delivery_track_id"` // delivery_track_id 业务字段
PointType string `gorm:"column:point_type;type:varchar(32);not null" json:"point_type"` // point_type 业务字段
OccurredAt time.Time `gorm:"column:occurred_at;type:timestamptz;not null" json:"occurred_at"` // occurred_at 业务字段
Longitude string `gorm:"column:longitude;type:varchar(32);not null;default:''" json:"longitude"` // longitude 业务字段
Latitude string `gorm:"column:latitude;type:varchar(32);not null;default:''" json:"latitude"` // latitude 业务字段
}
func init() { database.AppendMigrate(&DeliveryTrackPoint{}) }
func (table *DeliveryTrackPoint) TableName() string { return "delivery_track_point" }

View File

@@ -0,0 +1,23 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderAssign 对应 gasorder_assign保存订单履约分配历史。
type GasorderAssign struct {
Entity // 公共实体字段
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;index" json:"gasorder_basic_id"` // 订单自增主键
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;index" json:"gas_basic_id"` // 气站自增主键
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;index" json:"delivery_basic_id"` // 配送点自增主键
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;index" json:"staff_account_id"` // 配送人员自增主键
AssignerIdentity string `gorm:"column:assigner_identity;type:varchar(36);not null;default:''" json:"assigner_identity"` // 分配人标识
AssignerName string `gorm:"column:assigner_name;type:varchar(64);not null;default:''" json:"assigner_name"` // 分配人姓名快照
AssignedAt time.Time `gorm:"column:assigned_at;type:timestamptz;not null;index" json:"assigned_at"` // 分配时间
Reason string `gorm:"column:reason;type:text;not null;default:''" json:"reason"` // 分配原因
}
func init() { database.AppendMigrate(&GasorderAssign{}) }
func (table *GasorderAssign) TableName() string { return "gasorder_assign" }

View File

@@ -0,0 +1,34 @@
package models
import "git.apinb.com/bsm-sdk/core/database"
// GasorderBasic 对应 gasorder_basic保存气体配送订单当前快照。
type GasorderBasic struct {
Entity // 公共实体字段Status 保存订单当前状态
OrderNo string `gorm:"column:order_no;type:varchar(64);not null;uniqueIndex" json:"order_no"` // 订单编号
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;uniqueIndex" json:"request_no"` // 创建幂等号
GasorderContractID uint64 `gorm:"column:gasorder_contract_id;not null;index" json:"gasorder_contract_id"` // 合同自增主键
UserAccountID uint64 `gorm:"column:user_account_id;not null;index" json:"user_account_id"` // 服务用户自增主键
CreatorType string `gorm:"column:creator_type;type:varchar(32);not null" json:"creator_type"` // 业务创建方类型
CreatorID uint64 `gorm:"column:creator_id;not null;default:0;index" json:"creator_id"` // 业务创建方自增主键
CreatorIdentity string `gorm:"column:creator_identity;type:varchar(36);not null;index" json:"creator_identity"` // 业务创建方标识
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;index" json:"gas_basic_id"` // 履约气站自增主键
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;default:0;index" json:"delivery_basic_id"` // 当前配送点自增主键
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;default:0;index" json:"staff_account_id"` // 当前配送人员自增主键
Address string `gorm:"column:address;type:varchar(255);not null" json:"address"` // 配送地址快照
Longitude string `gorm:"column:longitude;type:varchar(32);not null;default:''" json:"longitude"` // 配送经度快照
Latitude string `gorm:"column:latitude;type:varchar(32);not null;default:''" json:"latitude"` // 配送纬度快照
ContactName string `gorm:"column:contact_name;type:varchar(64);not null" json:"contact_name"` // 联系人快照
ContactPhone string `gorm:"column:contact_phone;type:varchar(32);not null" json:"contact_phone"` // 联系电话快照
ProductAmount int64 `gorm:"column:product_amount;not null;check:product_amount >= 0" json:"product_amount"` // 商品金额,单位分
DeliveryFee int64 `gorm:"column:delivery_fee;not null;default:0;check:delivery_fee >= 0" json:"delivery_fee"` // 配送费,单位分
DiscountAmount int64 `gorm:"column:discount_amount;not null;default:0;check:discount_amount >= 0" json:"discount_amount"` // 优惠金额,单位分
PayableAmount int64 `gorm:"column:payable_amount;not null;check:payable_amount > 0" json:"payable_amount"` // 应付金额,单位分
PreviousStatus string `gorm:"column:previous_status;type:varchar(32);not null;default:''" json:"previous_status"` // 异常前状态
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;default:''" json:"operator_identity"` // 建单操作人标识
OperatorName string `gorm:"column:operator_name;type:varchar(64);not null;default:''" json:"operator_name"` // 建单操作人姓名快照
Remark string `gorm:"column:remark;type:text;not null;default:''" json:"remark"` // 订单备注
}
func init() { database.AppendMigrate(&GasorderBasic{}) }
func (table *GasorderBasic) TableName() string { return "gasorder_basic" }

View File

@@ -0,0 +1,22 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderConfirm 对应 gasorder_confirm保存用户签收确认。
type GasorderConfirm struct {
Entity // 公共实体字段
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;uniqueIndex" json:"gasorder_basic_id"` // 订单自增主键
ConfirmType string `gorm:"column:confirm_type;type:varchar(32);not null" json:"confirm_type"` // 签收类型
RecipientName string `gorm:"column:recipient_name;type:varchar(64);not null" json:"recipient_name"` // 签收人姓名快照
RecipientPhone string `gorm:"column:recipient_phone;type:varchar(32);not null;default:''" json:"recipient_phone"` // 签收人手机号快照
ProofURI string `gorm:"column:proof_uri;type:varchar(512);not null;default:''" json:"proof_uri"` // 签名或凭证地址
ConfirmedAt time.Time `gorm:"column:confirmed_at;type:timestamptz;not null;index" json:"confirmed_at"` // 确认时间
Remark string `gorm:"column:remark;type:text;not null;default:''" json:"remark"` // 签收备注
}
func init() { database.AppendMigrate(&GasorderConfirm{}) }
func (table *GasorderConfirm) TableName() string { return "gasorder_confirm" }

View File

@@ -0,0 +1,26 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderContract 对应 gasorder_contract保存用户与气站唯一供气合同。
type GasorderContract struct {
Entity // 公共实体字段
ContractNo string `gorm:"column:contract_no;type:varchar(64);not null;uniqueIndex" json:"contract_no"` // 合同编号
UserAccountID uint64 `gorm:"column:user_account_id;not null;uniqueIndex:idx_gasorder_contract_party" json:"user_account_id"` // 签约用户自增主键
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;uniqueIndex:idx_gasorder_contract_party" json:"gas_basic_id"` // 签约气站自增主键
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;default:0;index" json:"delivery_basic_id"` // 默认配送点自增主键
Title string `gorm:"column:title;type:varchar(255);not null" json:"title"` // 合同标题
Terms string `gorm:"column:terms;type:text;not null;default:''" json:"terms"` // 合同条款
FileURI string `gorm:"column:file_uri;type:varchar(512);not null;default:''" json:"file_uri"` // 合同文件地址
DefaultDeliveryFee int64 `gorm:"column:default_delivery_fee;not null;default:0;check:default_delivery_fee >= 0" json:"default_delivery_fee"` // 默认配送费,单位分
SignedAt time.Time `gorm:"column:signed_at;type:timestamptz;not null" json:"signed_at"` // 签订时间
EffectiveAt time.Time `gorm:"column:effective_at;type:timestamptz;not null" json:"effective_at"` // 生效时间
ExpiredAt *time.Time `gorm:"column:expired_at;type:timestamptz" json:"expired_at"` // 到期时间
}
func init() { database.AppendMigrate(&GasorderContract{}) }
func (table *GasorderContract) TableName() string { return "gasorder_contract" }

View File

@@ -0,0 +1,23 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderContractProduct 对应 gasorder_contract_product保存合同气瓶绑定历史。
type GasorderContractProduct struct {
Entity // 公共实体字段
GasorderContractID uint64 `gorm:"column:gasorder_contract_id;not null;index" json:"gasorder_contract_id"` // 合同自增主键
ProductInfoID uint64 `gorm:"column:product_info_id;not null;index;uniqueIndex:idx_active_contract_product,where:unbound_at IS NULL" json:"product_info_id"` // 实体气瓶自增主键
ProductCode string `gorm:"column:product_code;type:varchar(64);not null" json:"product_code"` // 产品标识快照
ProductTypeName string `gorm:"column:product_type_name;type:varchar(128);not null" json:"product_type_name"` // 产品类型名称快照
ProductParams string `gorm:"column:product_params;type:text;not null;default:'{}'" json:"product_params"` // 产品规格参数快照
UnitPrice int64 `gorm:"column:unit_price;not null;check:unit_price >= 0" json:"unit_price"` // 约定充装单价,单位分
BoundAt time.Time `gorm:"column:bound_at;type:timestamptz;not null" json:"bound_at"` // 绑定时间
UnboundAt *time.Time `gorm:"column:unbound_at;type:timestamptz;index" json:"unbound_at"` // 解绑时间
}
func init() { database.AppendMigrate(&GasorderContractProduct{}) }
func (table *GasorderContractProduct) TableName() string { return "gasorder_contract_product" }

View File

@@ -0,0 +1,24 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderContractRevision 对应 gasorder_contract_revision保存唯一合同的不可变变更快照。
type GasorderContractRevision struct {
Entity // 公共实体字段
GasorderContractID uint64 `gorm:"column:gasorder_contract_id;not null;index" json:"gasorder_contract_id"` // 合同自增主键
Action string `gorm:"column:action;type:varchar(32);not null;index" json:"action"` // 合同变更动作
ContractStatus string `gorm:"column:contract_status;type:varchar(32);not null" json:"contract_status"` // 合同状态快照
EffectiveAt time.Time `gorm:"column:effective_at;type:timestamptz;not null" json:"effective_at"` // 生效时间快照
ExpiredAt *time.Time `gorm:"column:expired_at;type:timestamptz" json:"expired_at"` // 到期时间快照
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;default:''" json:"operator_identity"` // 操作人标识
OperatorName string `gorm:"column:operator_name;type:varchar(64);not null;default:''" json:"operator_name"` // 操作人姓名快照
OccurredAt time.Time `gorm:"column:occurred_at;type:timestamptz;not null;index" json:"occurred_at"` // 发生时间
Reason string `gorm:"column:reason;type:text;not null;default:''" json:"reason"` // 变更原因
}
func init() { database.AppendMigrate(&GasorderContractRevision{}) }
func (table *GasorderContractRevision) TableName() string { return "gasorder_contract_revision" }

View File

@@ -0,0 +1,18 @@
package models
import "git.apinb.com/bsm-sdk/core/database"
// GasorderItem 对应 gasorder_item保存订单气瓶与规格价格快照。
type GasorderItem struct {
Entity // 公共实体字段
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;index" json:"gasorder_basic_id"` // 订单自增主键
GasorderContractProductID uint64 `gorm:"column:gasorder_contract_product_id;not null;index" json:"gasorder_contract_product_id"` // 合同气瓶绑定自增主键
ProductInfoID uint64 `gorm:"column:product_info_id;not null;index" json:"product_info_id"` // 实体气瓶自增主键
ProductCode string `gorm:"column:product_code;type:varchar(64);not null" json:"product_code"` // 产品标识快照
ProductTypeName string `gorm:"column:product_type_name;type:varchar(128);not null" json:"product_type_name"` // 产品类型名称快照
ProductParams string `gorm:"column:product_params;type:text;not null;default:'{}'" json:"product_params"` // 产品规格参数快照
UnitPrice int64 `gorm:"column:unit_price;not null;check:unit_price >= 0" json:"unit_price"` // 成交单价,单位分
}
func init() { database.AppendMigrate(&GasorderItem{}) }
func (table *GasorderItem) TableName() string { return "gasorder_item" }

View File

@@ -0,0 +1,15 @@
package models
import "git.apinb.com/bsm-sdk/core/database"
// GasorderPayment 对应 gasorder_payment保存订单支付尝试与统一钱包支付关联。
type GasorderPayment struct {
Entity // 公共实体字段Status 保存支付尝试状态
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;index;uniqueIndex:idx_gasorder_payment_attempt" json:"gasorder_basic_id"` // 订单自增主键
WalletPaymentID uint64 `gorm:"column:wallet_payment_id;not null;uniqueIndex" json:"wallet_payment_id"` // 钱包支付记录自增主键
AttemptNo int `gorm:"column:attempt_no;not null;uniqueIndex:idx_gasorder_payment_attempt" json:"attempt_no"` // 支付尝试序号
Amount int64 `gorm:"column:amount;not null;check:amount > 0" json:"amount"` // 支付金额,单位分
}
func init() { database.AppendMigrate(&GasorderPayment{}) }
func (table *GasorderPayment) TableName() string { return "gasorder_payment" }

View File

@@ -0,0 +1,22 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderStatus 对应 gasorder_status保存不可变订单状态历史。
type GasorderStatus struct {
Entity // 公共实体字段
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;index" json:"gasorder_basic_id"` // 订单自增主键
FromStatus string `gorm:"column:from_status;type:varchar(32);not null;default:''" json:"from_status"` // 原状态
ToStatus string `gorm:"column:to_status;type:varchar(32);not null;index" json:"to_status"` // 新状态
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;default:''" json:"operator_identity"` // 操作人标识
OperatorName string `gorm:"column:operator_name;type:varchar(64);not null;default:''" json:"operator_name"` // 操作人姓名快照
OccurredAt time.Time `gorm:"column:occurred_at;type:timestamptz;not null;index" json:"occurred_at"` // 发生时间
Reason string `gorm:"column:reason;type:text;not null;default:''" json:"reason"` // 变更原因
}
func init() { database.AppendMigrate(&GasorderStatus{}) }
func (table *GasorderStatus) TableName() string { return "gasorder_status" }

View File

@@ -0,0 +1,20 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderTrack 对应 gasorder_track保存一次配送尝试的轨迹摘要。
type GasorderTrack struct {
Entity // 公共实体字段
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;index;uniqueIndex:idx_gasorder_track_attempt" json:"gasorder_basic_id"` // 订单自增主键
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;index" json:"staff_account_id"` // 配送人员自增主键
AttemptNo int `gorm:"column:attempt_no;not null;uniqueIndex:idx_gasorder_track_attempt" json:"attempt_no"` // 配送尝试序号
StartedAt time.Time `gorm:"column:started_at;type:timestamptz;not null;index" json:"started_at"` // 开始时间
CompletedAt *time.Time `gorm:"column:completed_at;type:timestamptz" json:"completed_at"` // 到达时间
}
func init() { database.AppendMigrate(&GasorderTrack{}) }
func (table *GasorderTrack) TableName() string { return "gasorder_track" }

View File

@@ -0,0 +1,21 @@
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
)
// GasorderTrackPoint 对应 gasorder_track_point保存不可变配送位置点。
type GasorderTrackPoint struct {
Entity // 公共实体字段
GasorderTrackID uint64 `gorm:"column:gasorder_track_id;not null;index" json:"gasorder_track_id"` // 轨迹自增主键
Longitude string `gorm:"column:longitude;type:varchar(32);not null" json:"longitude"` // 经度
Latitude string `gorm:"column:latitude;type:varchar(32);not null" json:"latitude"` // 纬度
OccurredAt time.Time `gorm:"column:occurred_at;type:timestamptz;not null;index" json:"occurred_at"` // 定位发生时间
Source string `gorm:"column:source;type:varchar(32);not null;default:'gps'" json:"source"` // 定位来源
Accuracy string `gorm:"column:accuracy;type:varchar(32);not null;default:''" json:"accuracy"` // 定位精度
}
func init() { database.AppendMigrate(&GasorderTrackPoint{}) }
func (table *GasorderTrackPoint) TableName() string { return "gasorder_track_point" }