已完成用户APP首期功能开发
交付用户端首期页面、配套接口、后台资源及测试文档。用户APP构建、静态分析和三个管理后台构建通过;完整测试仍有2项失败,后端模型注释检查未通过,详见交付记录。
This commit is contained in:
@@ -7,23 +7,27 @@ import (
|
||||
|
||||
// CsTicket 对应 cs_ticket,保存客服工单。
|
||||
type CsTicket struct {
|
||||
Entity // 公共实体字段
|
||||
TicketStatus int `gorm:"column:ticket_status;not null;default:32;index" json:"ticket_status"` // 工单业务状态
|
||||
TicketNo string `gorm:"column:ticket_no;type:varchar(64);not null;uniqueIndex" json:"ticket_no"` // ticket_no 业务字段
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;default:'';uniqueIndex:,where:request_no <> ''" json:"request_no"` // 创建幂等号
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index" json:"user_account_id"` // user_account_id 业务字段
|
||||
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;default:0;index" json:"staff_account_id"` // 分派工作人员内部主键
|
||||
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;default:0;index" json:"gas_basic_id"` // 服务气站内部主键
|
||||
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;default:0;index" json:"delivery_basic_id"` // 关联配送点内部主键
|
||||
Category string `gorm:"column:category;type:varchar(64);not null" json:"category"` // category 业务字段
|
||||
Priority string `gorm:"column:priority;type:varchar(16);not null;default:'normal'" json:"priority"` // priority 业务字段
|
||||
Description string `gorm:"column:description;type:text;not null;default:''" json:"description"` // 用户问题描述
|
||||
Address string `gorm:"column:address;type:varchar(255);not null;default:''" json:"address"` // 上门地址快照
|
||||
AppointmentAt *time.Time `gorm:"column:appointment_at;type:timestamptz;index" json:"appointment_at"` // 预约服务时间
|
||||
StartedAt *time.Time `gorm:"column:started_at;type:timestamptz" json:"started_at"` // 开始处理时间
|
||||
CompletedAt *time.Time `gorm:"column:completed_at;type:timestamptz" json:"completed_at"` // 用户确认完成时间
|
||||
Result string `gorm:"column:result;type:text;not null;default:''" json:"result"` // 工作人员处理结果
|
||||
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;default:'';index" json:"operator_identity"` // 最近操作人业务标识
|
||||
Entity // 公共实体字段
|
||||
TicketStatus int `gorm:"column:ticket_status;not null;default:32;index" json:"ticket_status"` // 工单业务状态
|
||||
TicketNo string `gorm:"column:ticket_no;type:varchar(64);not null;uniqueIndex" json:"ticket_no"` // ticket_no 业务字段
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;default:'';uniqueIndex:,where:request_no <> ''" json:"request_no"` // 创建幂等号
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index" json:"user_account_id"` // user_account_id 业务字段
|
||||
GasorderContractID uint64 `gorm:"column:gasorder_contract_id;not null;default:0;index" json:"gasorder_contract_id"` // 关联供气合同内部主键,0表示非合同申请;由用户端归属校验后写入
|
||||
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;default:0;index" json:"staff_account_id"` // 分派工作人员内部主键
|
||||
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;default:0;index" json:"gas_basic_id"` // 服务气站内部主键
|
||||
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;default:0;index" json:"delivery_basic_id"` // 关联配送点内部主键
|
||||
Category string `gorm:"column:category;type:varchar(64);not null" json:"category"` // category 业务字段
|
||||
Priority string `gorm:"column:priority;type:varchar(16);not null;default:'normal'" json:"priority"` // priority 业务字段
|
||||
Description string `gorm:"column:description;type:text;not null;default:''" json:"description"` // 用户问题描述
|
||||
FaultType string `gorm:"column:fault_type;type:varchar(32);not null;default:''" json:"fault_type"` // 故障类型:leak泄漏、valve阀门、alarm报警器、other其他;历史为空
|
||||
ContactName string `gorm:"column:contact_name;type:varchar(64);not null;default:''" json:"contact_name"` // 提交时联系人快照
|
||||
ContactPhone string `gorm:"column:contact_phone;type:varchar(32);not null;default:''" json:"contact_phone"` // 提交时联系电话快照
|
||||
Address string `gorm:"column:address;type:varchar(255);not null;default:''" json:"address"` // 上门地址快照
|
||||
AppointmentAt *time.Time `gorm:"column:appointment_at;type:timestamptz;index" json:"appointment_at"` // 预约服务时间
|
||||
StartedAt *time.Time `gorm:"column:started_at;type:timestamptz" json:"started_at"` // 开始处理时间
|
||||
CompletedAt *time.Time `gorm:"column:completed_at;type:timestamptz" json:"completed_at"` // 用户确认完成时间
|
||||
Result string `gorm:"column:result;type:text;not null;default:''" json:"result"` // 工作人员处理结果
|
||||
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;default:'';index" json:"operator_identity"` // 最近操作人业务标识
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&CsTicket{}) }
|
||||
|
||||
16
backend/api/internal/models/deposit_policy.go
Normal file
16
backend/api/internal/models/deposit_policy.go
Normal file
@@ -0,0 +1,16 @@
|
||||
// 功能描述:气瓶押金规则与运营说明;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
|
||||
// DepositPolicy 保存气瓶类型对应的押金金额,金额单位为分。
|
||||
type DepositPolicy struct {
|
||||
Entity
|
||||
ProductTypeID uint64 `gorm:"column:product_type_id;not null;uniqueIndex;comment:适用产品类型内部主键" json:"product_type_id"`
|
||||
Name string `gorm:"column:name;type:varchar(128);not null;comment:押金规则名称" json:"name"`
|
||||
Amount int64 `gorm:"column:amount;not null;check:amount >= 0;comment:单只气瓶押金金额,单位分" json:"amount"`
|
||||
RuleText string `gorm:"column:rule_text;type:text;not null;default:'';comment:用户端展示的押金退还规则正文" json:"rule_text"`
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&DepositPolicy{}) }
|
||||
func (table *DepositPolicy) TableName() string { return "deposit_policy" }
|
||||
25
backend/api/internal/models/deposit_record.go
Normal file
25
backend/api/internal/models/deposit_record.go
Normal file
@@ -0,0 +1,25 @@
|
||||
// 功能描述:用户气瓶押金事实及退款状态;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
)
|
||||
|
||||
// DepositRecord 记录每只气瓶独立押金,不以钱包余额推算押金。
|
||||
type DepositRecord struct {
|
||||
Entity
|
||||
DepositStatus int `gorm:"column:deposit_status;not null;default:10;index;comment:押金状态:10=使用中,20=退款中,23=已退回" json:"deposit_status"`
|
||||
DepositNo string `gorm:"column:deposit_no;type:varchar(64);not null;uniqueIndex;comment:押金业务编号" json:"deposit_no"`
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index;comment:押金所属用户内部主键" json:"user_account_id"`
|
||||
ProductInfoID uint64 `gorm:"column:product_info_id;not null;index;comment:绑定实体气瓶内部主键" json:"product_info_id"`
|
||||
PolicyID uint64 `gorm:"column:policy_id;not null;index;comment:计费时采用的押金规则内部主键" json:"policy_id"`
|
||||
GasorderID uint64 `gorm:"column:gasorder_id;not null;default:0;index;comment:来源供气订单内部主键,0表示历史导入" json:"gasorder_id"`
|
||||
Amount int64 `gorm:"column:amount;not null;check:amount >= 0;comment:实收押金金额,单位分" json:"amount"`
|
||||
PaidAt time.Time `gorm:"column:paid_at;type:timestamptz;not null;comment:押金缴纳时间" json:"paid_at"`
|
||||
RefundedAt *time.Time `gorm:"column:refunded_at;type:timestamptz;comment:押金实际退回时间" json:"refunded_at"`
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&DepositRecord{}) }
|
||||
func (table *DepositRecord) TableName() string { return "deposit_record" }
|
||||
36
backend/api/internal/models/deposit_return_request.go
Normal file
36
backend/api/internal/models/deposit_return_request.go
Normal file
@@ -0,0 +1,36 @@
|
||||
// 功能描述:记录退瓶上门回收、验收扣减和押金退回闭环;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
)
|
||||
|
||||
// DepositReturnRequest 以独立状态机保留用户申请和平台验收事实。
|
||||
type DepositReturnRequest struct {
|
||||
Entity
|
||||
ReturnStatus int `gorm:"column:return_status;not null;default:10;index;comment:退瓶状态:10=待上门,20=已回收待验收,30=已验收待退款,40=已完成,50=已取消" json:"return_status"`
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;uniqueIndex;comment:用户端幂等请求号" json:"request_no"`
|
||||
DepositRecordID uint64 `gorm:"column:deposit_record_id;not null;uniqueIndex;comment:对应押金记录内部主键" json:"deposit_record_id"`
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index;comment:申请用户内部主键" json:"user_account_id"`
|
||||
UserAddressID uint64 `gorm:"column:user_address_id;not null;comment:上门回收地址内部主键" json:"user_address_id"`
|
||||
AddressSnapshot string `gorm:"column:address_snapshot;type:varchar(255);not null;comment:申请时上门地址快照" json:"address_snapshot"`
|
||||
ContactName string `gorm:"column:contact_name;type:varchar(64);not null;comment:申请时联系人快照" json:"contact_name"`
|
||||
ContactPhone string `gorm:"column:contact_phone;type:varchar(32);not null;comment:申请时联系手机快照" json:"contact_phone"`
|
||||
AppointmentStart time.Time `gorm:"column:appointment_start;type:timestamptz;not null;comment:预约上门时段开始时间" json:"appointment_start"`
|
||||
AppointmentEnd time.Time `gorm:"column:appointment_end;type:timestamptz;not null;comment:预约上门时段结束时间" json:"appointment_end"`
|
||||
EstimatedAmount int64 `gorm:"column:estimated_amount;not null;check:estimated_amount >= 0;comment:申请时预计可退押金,单位分" json:"estimated_amount"`
|
||||
DeductionAmount int64 `gorm:"column:deduction_amount;not null;default:0;check:deduction_amount >= 0;comment:验收后损坏或缺件扣减,单位分" json:"deduction_amount"`
|
||||
RefundAmount int64 `gorm:"column:refund_amount;not null;default:0;check:refund_amount >= 0;comment:最终退入余额账户金额,单位分" json:"refund_amount"`
|
||||
InspectionRemark string `gorm:"column:inspection_remark;type:text;not null;default:'';comment:验收结果及扣减理由" json:"inspection_remark"`
|
||||
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;default:'';comment:最后操作的平台账号标识" json:"operator_identity"`
|
||||
PickedUpAt *time.Time `gorm:"column:picked_up_at;type:timestamptz;comment:实际回收时间" json:"picked_up_at"`
|
||||
InspectedAt *time.Time `gorm:"column:inspected_at;type:timestamptz;comment:完成验收时间" json:"inspected_at"`
|
||||
CompletedAt *time.Time `gorm:"column:completed_at;type:timestamptz;comment:押金退回完成时间" json:"completed_at"`
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&DepositReturnRequest{}) }
|
||||
|
||||
// TableName 返回稳定表名。
|
||||
func (*DepositReturnRequest) TableName() string { return "deposit_return_request" }
|
||||
25
backend/api/internal/models/dev_usage_stat.go
Normal file
25
backend/api/internal/models/dev_usage_stat.go
Normal file
@@ -0,0 +1,25 @@
|
||||
// 功能:保存设备的日用气统计事实,供用户端查询与平台维护;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
)
|
||||
|
||||
// DevUsageStat 对应dev_usage_stat,每条记录表示单个设备一个自然日的已校验用气量。
|
||||
type DevUsageStat struct {
|
||||
Entity // 公共实体字段
|
||||
ProductInfoID uint64 `gorm:"column:product_info_id;not null;index;uniqueIndex:ux_dev_usage_stat_day;comment:统计所属实体设备内部主键" json:"product_info_id"` // 实体设备内部主键
|
||||
StatDate time.Time `gorm:"column:stat_date;type:date;not null;uniqueIndex:ux_dev_usage_stat_day;comment:统计日期,按用户服务时区划分" json:"stat_date"` // 统计自然日
|
||||
UsageKg float64 `gorm:"column:usage_kg;type:numeric(12,3);not null;default:0;comment:当日用气量,单位千克,不得为负数" json:"usage_kg"` // 当日用气量
|
||||
BreakfastKg float64 `gorm:"column:breakfast_kg;type:numeric(12,3);not null;default:0;comment:早餐时段用气量,单位千克" json:"breakfast_kg"` // 早餐时段用气量
|
||||
LunchKg float64 `gorm:"column:lunch_kg;type:numeric(12,3);not null;default:0;comment:午餐时段用气量,单位千克" json:"lunch_kg"` // 午餐时段用气量
|
||||
DinnerKg float64 `gorm:"column:dinner_kg;type:numeric(12,3);not null;default:0;comment:晚餐时段用气量,单位千克" json:"dinner_kg"` // 晚餐时段用气量
|
||||
Source string `gorm:"column:source;type:varchar(32);not null;comment:数据来源:meter=计量表,device=设备上报,manual=人工导入" json:"source"` // 统计数据来源
|
||||
CalcVersion string `gorm:"column:calc_version;type:varchar(32);not null;comment:生成该统计的计算口径版本" json:"calc_version"` // 计算口径版本
|
||||
CalculatedAt time.Time `gorm:"column:calculated_at;type:timestamptz;not null;comment:统计计算完成时间" json:"calculated_at"` // 统计计算时间
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&DevUsageStat{}) }
|
||||
func (table *DevUsageStat) TableName() string { return "dev_usage_stat" }
|
||||
17
backend/api/internal/models/ec_favorite.go
Normal file
17
backend/api/internal/models/ec_favorite.go
Normal file
@@ -0,0 +1,17 @@
|
||||
// 功能描述:电商商品收藏关系与并发版本;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
|
||||
// EcFavorite 保存每个账户对商品的唯一收藏关系;取消收藏归档,商品下架保留关系。
|
||||
type EcFavorite struct {
|
||||
Entity // 公开标识、创建更新时间及归档状态。
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;uniqueIndex:ux_ec_favorite_owner_product" json:"user_account_id"` // 收藏账户内部关联键。
|
||||
EcProductID uint64 `gorm:"column:ec_product_id;not null;uniqueIndex:ux_ec_favorite_owner_product" json:"ec_product_id"` // 收藏商品内部关联键。
|
||||
Revision uint64 `gorm:"column:revision;not null;default:1" json:"revision"` // 每次状态变化递增,用于拒绝旧请求覆盖。
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&EcFavorite{}) }
|
||||
|
||||
// TableName 返回收藏关系的唯一表名。
|
||||
func (*EcFavorite) TableName() string { return "ec_favorite" }
|
||||
@@ -1,34 +1,41 @@
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
)
|
||||
|
||||
// GasorderBasic 对应 gasorder_basic,保存气体配送订单当前快照。
|
||||
type GasorderBasic struct {
|
||||
Entity // 公共实体字段
|
||||
OrderStatus int `gorm:"column:order_status;not null;default:16;index" json:"order_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"` // 应付金额,单位分
|
||||
PreviousOrderStatus int `gorm:"column:previous_order_status;not null;default:0" json:"previous_order_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"` // 订单备注
|
||||
Entity // 公共实体字段
|
||||
OrderStatus int `gorm:"column:order_status;not null;default:16;index" json:"order_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"` // 当前配送人员自增主键
|
||||
UserAddressID uint64 `gorm:"column:user_address_id;not null;default:0;index;comment:用户下单时选择的地址内部主键" json:"user_address_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"` // 联系电话快照
|
||||
AppointmentAt time.Time `gorm:"column:appointment_at;type:timestamptz;not null;default:CURRENT_TIMESTAMP;comment:用户选择的预约配送开始时间" json:"appointment_at"` // 预约配送开始时间
|
||||
ProductAmount int64 `gorm:"column:product_amount;not null;check:product_amount >= 0" json:"product_amount"` // 商品金额,单位分
|
||||
DepositAmount int64 `gorm:"column:deposit_amount;not null;default:0;check:deposit_amount >= 0;comment:本单待收气瓶押金合计,单位分" json:"deposit_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"` // 应付金额,单位分
|
||||
PreviousOrderStatus int `gorm:"column:previous_order_status;not null;default:0" json:"previous_order_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{}) }
|
||||
|
||||
@@ -11,7 +11,7 @@ type GasorderConfirm struct {
|
||||
Entity // 公共实体字段
|
||||
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;uniqueIndex" json:"gasorder_basic_id"` // 订单自增主键
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;default:'';uniqueIndex:,where:request_no <> ''" json:"request_no"` // 客户端提交幂等号
|
||||
ConfirmType string `gorm:"column:confirm_type;type:varchar(32);not null" json:"confirm_type"` // 签收类型
|
||||
ConfirmType string `gorm:"column:confirm_type;type:varchar(32);not null" json:"confirm_type"` // 签收类型:signature签名、receipt_code签收码、user_app本人认证确认;平台保留自定义类型
|
||||
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"` // 签名或凭证地址
|
||||
|
||||
17
backend/api/internal/models/gasorder_deposit.go
Normal file
17
backend/api/internal/models/gasorder_deposit.go
Normal file
@@ -0,0 +1,17 @@
|
||||
// 功能描述:保存供气订单创建时锁定的押金规则快照;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
|
||||
// GasorderDeposit 在订单支付后转换为正式押金事实,防止计费规则在支付期间变化。
|
||||
type GasorderDeposit struct {
|
||||
Entity
|
||||
DepositStatus int `gorm:"column:deposit_status;not null;default:10;index;comment:订单押金状态:10=待支付,22=已取消,23=已转正式押金" json:"deposit_status"`
|
||||
GasorderBasicID uint64 `gorm:"column:gasorder_basic_id;not null;index;uniqueIndex:idx_gasorder_deposit_product;comment:供气订单内部主键" json:"gasorder_basic_id"`
|
||||
ProductInfoID uint64 `gorm:"column:product_info_id;not null;index;uniqueIndex:idx_gasorder_deposit_product;comment:实体气瓶内部主键" json:"product_info_id"`
|
||||
PolicyID uint64 `gorm:"column:policy_id;not null;index;comment:下单时采用的押金规则内部主键" json:"policy_id"`
|
||||
Amount int64 `gorm:"column:amount;not null;check:amount >= 0;comment:下单时锁定的押金金额,单位分" json:"amount"`
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&GasorderDeposit{}) }
|
||||
func (table *GasorderDeposit) TableName() string { return "gasorder_deposit" }
|
||||
@@ -1,3 +1,4 @@
|
||||
// 功能:实体产品档案、当前归属及明确的厂商设备映射;版本:1.1.0。
|
||||
package models
|
||||
|
||||
import (
|
||||
@@ -9,18 +10,21 @@ import (
|
||||
// ProductInfo 对应 product_info,保存一物一码的实体产品档案。
|
||||
type ProductInfo struct {
|
||||
Entity // 公共实体字段
|
||||
ProductStatus int `gorm:"column:product_status;not null;default:10;index" json:"product_status"` // 产品业务状态
|
||||
Code string `gorm:"column:code;type:varchar(64);not null;uniqueIndex" json:"code"` // 产品唯一标识
|
||||
Name string `gorm:"column:name;type:varchar(128);not null" json:"name"` // 产品名称
|
||||
ProducerAccountID uint64 `gorm:"column:producer_account_id;not null;default:0;index" json:"producer_account_id"` // 生产商自增主键;历史数据迁移前可为 0,新建和编辑必须关联有效生产商
|
||||
ProductTypeID uint64 `gorm:"column:product_type_id;not null;index" json:"product_type_id"` // 产品类型自增主键
|
||||
Params string `gorm:"column:params;type:text;not null;default:'{}'" json:"params"` // 产品参数 JSON 对象文本
|
||||
WarehouseID uint64 `gorm:"column:warehouse_id;not null;default:0;index" json:"warehouse_id"` // 当前实际库房自增主键
|
||||
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;default:0;index" json:"gas_basic_id"` // 当前归属气站自增主键
|
||||
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;default:0;index" json:"delivery_basic_id"` // 当前归属配送站自增主键
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;default:0;index" json:"user_account_id"` // 当前归属用户自增主键
|
||||
ProducedAt time.Time `gorm:"column:produced_at;type:timestamptz;not null" json:"produced_at"` // 生产时间
|
||||
EnabledAt *time.Time `gorm:"column:enabled_at;type:timestamptz" json:"enabled_at"` // 首次启用时间
|
||||
ProductStatus int `gorm:"column:product_status;not null;default:10;index" json:"product_status"` // 产品业务状态
|
||||
Code string `gorm:"column:code;type:varchar(64);not null;uniqueIndex" json:"code"` // 产品唯一标识
|
||||
Name string `gorm:"column:name;type:varchar(128);not null" json:"name"` // 产品名称
|
||||
DeviceKind string `gorm:"column:device_kind;type:varchar(16);not null;default:'unknown';comment:设备分类:unknown=未分类,valve=智能阀,alarm=报警器,cylinder=钢瓶" json:"device_kind"` // 由后台明确分类,不按名称猜测
|
||||
VendorDeviceID string `gorm:"column:vendor_device_id;type:varchar(16);not null;default:'';comment:厂商16位十进制设备编号;空表示未建立物联网映射" json:"vendor_device_id"` // 平台档案到厂商设备的映射
|
||||
ProducerAccountID uint64 `gorm:"column:producer_account_id;not null;default:0;index" json:"producer_account_id"` // 生产商自增主键;历史数据迁移前可为 0,新建和编辑必须关联有效生产商
|
||||
ProductTypeID uint64 `gorm:"column:product_type_id;not null;index" json:"product_type_id"` // 产品类型自增主键
|
||||
Params string `gorm:"column:params;type:text;not null;default:'{}'" json:"params"` // 产品参数 JSON 对象文本
|
||||
WarehouseID uint64 `gorm:"column:warehouse_id;not null;default:0;index" json:"warehouse_id"` // 当前实际库房自增主键
|
||||
GasBasicID uint64 `gorm:"column:gas_basic_id;not null;default:0;index" json:"gas_basic_id"` // 当前归属气站自增主键
|
||||
DeliveryBasicID uint64 `gorm:"column:delivery_basic_id;not null;default:0;index" json:"delivery_basic_id"` // 当前归属配送站自增主键
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;default:0;index" json:"user_account_id"` // 当前归属用户自增主键
|
||||
DeviceGroupID uint64 `gorm:"column:device_group_id;not null;default:0;index;comment:当前用户设备分组内部主键;0表示未分组,产品归属变化时清空" json:"-"` // 当前用户自定义分组,不对平台资源接口公开
|
||||
ProducedAt time.Time `gorm:"column:produced_at;type:timestamptz;not null" json:"produced_at"` // 生产时间
|
||||
EnabledAt *time.Time `gorm:"column:enabled_at;type:timestamptz" json:"enabled_at"` // 首次启用时间
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&ProductInfo{}) }
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// 功能描述:保存用户收货地址及独立联系人,兼容历史未填写联系人记录。
|
||||
// 版本:1.1.0。
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
@@ -5,6 +7,9 @@ import "git.apinb.com/bsm-sdk/core/database"
|
||||
// UserAddress 对应 user_address,保存用户地址。
|
||||
type UserAddress struct {
|
||||
Entity // 公共实体字段
|
||||
ContactName string `gorm:"column:contact_name;type:varchar(64);not null;default:'';comment:收货联系人姓名" json:"contact_name"` // 收货联系人姓名
|
||||
ContactPhone string `gorm:"column:contact_phone;type:varchar(32);not null;default:'';comment:收货联系人手机号" json:"contact_phone"` // 收货联系人手机号
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(64);not null;default:'';comment:客户端新增请求幂等标识,历史记录为空" json:"-"` // 新增地址请求幂等标识,不对外返回
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index;uniqueIndex:idx_default_user_address,where:is_default = true" json:"user_account_id"` // user_account_id 业务字段
|
||||
Address string `gorm:"column:address;type:varchar(255);not null" json:"address"` // address 业务字段
|
||||
Longitude string `gorm:"column:longitude;type:varchar(32);not null;default:''" json:"longitude"` // longitude 业务字段
|
||||
|
||||
14
backend/api/internal/models/user_device_group.go
Normal file
14
backend/api/internal/models/user_device_group.go
Normal file
@@ -0,0 +1,14 @@
|
||||
// 功能:保存用户自定义设备分组,设备归组关系由产品档案记录;版本:1.0.0。
|
||||
package models
|
||||
|
||||
// UserDeviceGroup 是本人设备的展示分组,不承载物联网控制权限。
|
||||
type UserDeviceGroup struct {
|
||||
Entity // 公共实体字段
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null" json:"-"` // 分组所属用户内部主键
|
||||
Name string `gorm:"column:name;type:varchar(32);not null" json:"name"` // 用户自定义分组名称
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(36);not null" json:"-"` // 新增请求幂等标识
|
||||
SortNo int `gorm:"column:sort_no;not null;default:0" json:"sort_no"` // 同一用户内的显示顺序
|
||||
}
|
||||
|
||||
// TableName 返回独立设备分组表,不注册全库自动迁移。
|
||||
func (*UserDeviceGroup) TableName() string { return "user_device_group" }
|
||||
15
backend/api/internal/models/user_emergency_contact.go
Normal file
15
backend/api/internal/models/user_emergency_contact.go
Normal file
@@ -0,0 +1,15 @@
|
||||
// 功能:保存本人紧急联系人资料,不隐含设备授权或通知权限;版本:1.0.0。
|
||||
package models
|
||||
|
||||
// UserEmergencyContact 联系人最多五位;归档保留幂等标识以防重试复活。
|
||||
type UserEmergencyContact struct {
|
||||
Entity // 公共实体字段
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null"` // 联系人资料所属用户内部主键
|
||||
Name string `gorm:"column:name;type:varchar(64);not null"` // 联系人姓名
|
||||
Phone string `gorm:"column:phone;type:varchar(32);not null"` // 联系人手机号
|
||||
Relationship string `gorm:"column:relationship;type:varchar(32);not null"` // 与当前用户的关系描述
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(36);not null"` // 新增请求幂等标识
|
||||
}
|
||||
|
||||
// TableName 返回独立用户资料表,不注册全库自动迁移。
|
||||
func (*UserEmergencyContact) TableName() string { return "user_emergency_contact" }
|
||||
45
backend/api/internal/models/user_family_member.go
Normal file
45
backend/api/internal/models/user_family_member.go
Normal file
@@ -0,0 +1,45 @@
|
||||
// 功能:家庭成员邀请、接受状态和设备共享授权;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// UserFamilyMember 保存房主发出的成员邀请,成员确认后才建立家庭关系。
|
||||
type UserFamilyMember struct {
|
||||
Entity
|
||||
OwnerUserAccountID uint64 `gorm:"column:owner_user_account_id;not null;index" json:"-"` // 房主用户内部主键
|
||||
MemberUserAccountID uint64 `gorm:"column:member_user_account_id;not null;default:0;index" json:"-"` // 接受邀请的成员用户内部主键,0表示尚未接受
|
||||
Name string `gorm:"column:name;type:varchar(64);not null" json:"name"` // 邀请时填写的成员称呼
|
||||
Phone string `gorm:"column:phone;type:varchar(32);not null;index" json:"-"` // 受邀手机号,仅向房主或本人脱敏返回
|
||||
Relationship string `gorm:"column:relationship;type:varchar(32);not null;default:''" json:"relationship"` // 与房主关系
|
||||
InviteStatus int `gorm:"column:invite_status;not null;default:10;index" json:"invite_status"` // 邀请状态:10=待确认,20=已接受,30=已拒绝,40=已撤销
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(36);not null" json:"-"` // 邀请幂等请求号
|
||||
ExpiresAt time.Time `gorm:"column:expires_at;type:timestamptz;not null" json:"expires_at"` // 邀请失效时间
|
||||
AcceptedAt *time.Time `gorm:"column:accepted_at;type:timestamptz" json:"accepted_at"` // 成员接受时间
|
||||
RevokedAt *time.Time `gorm:"column:revoked_at;type:timestamptz" json:"revoked_at"` // 房主撤销时间
|
||||
}
|
||||
|
||||
func (*UserFamilyMember) TableName() string { return "user_family_member" }
|
||||
|
||||
// UserDeviceShare 保存单个家庭成员对单个设备的最小授权范围。
|
||||
type UserDeviceShare struct {
|
||||
Entity
|
||||
FamilyMemberID uint64 `gorm:"column:family_member_id;not null;index;uniqueIndex:ux_family_device_share" json:"-"` // 家庭成员关系内部主键
|
||||
ProductInfoID uint64 `gorm:"column:product_info_id;not null;index;uniqueIndex:ux_family_device_share" json:"-"` // 房主名下设备内部主键
|
||||
CanView bool `gorm:"column:can_view;not null;default:false" json:"can_view"` // 是否允许查看设备资料和状态
|
||||
CanAlert bool `gorm:"column:can_alert;not null;default:false" json:"can_alert"` // 是否允许接收该设备危险告警
|
||||
CanControl bool `gorm:"column:can_control;not null;default:false" json:"can_control"` // 是否允许发起远程控制,控制仍需二次确认
|
||||
}
|
||||
|
||||
func (*UserDeviceShare) TableName() string { return "user_device_share" }
|
||||
|
||||
// UserFamilyAudit 保存邀请和授权变化,供安全追溯。
|
||||
type UserFamilyAudit struct {
|
||||
Entity
|
||||
OwnerUserAccountID uint64 `gorm:"column:owner_user_account_id;not null;index" json:"-"` // 房主用户内部主键
|
||||
FamilyMemberID uint64 `gorm:"column:family_member_id;not null;default:0;index" json:"-"` // 关联成员内部主键
|
||||
ActorUserAccountID uint64 `gorm:"column:actor_user_account_id;not null;index" json:"-"` // 执行操作的用户内部主键
|
||||
Action string `gorm:"column:action;type:varchar(32);not null;index" json:"action"` // 操作类型:invite/accept/reject/update_permissions/revoke
|
||||
Summary string `gorm:"column:summary;type:varchar(512);not null;default:''" json:"summary"` // 不含手机号的变更摘要
|
||||
}
|
||||
|
||||
func (*UserFamilyAudit) TableName() string { return "user_family_audit" }
|
||||
19
backend/api/internal/models/user_message_read.go
Normal file
19
backend/api/internal/models/user_message_read.go
Normal file
@@ -0,0 +1,19 @@
|
||||
// 功能:保存用户对真实业务消息的已读回执;版本:1.0.0。
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
)
|
||||
|
||||
// UserMessageRead 仅保存已读状态,消息正文仍来自订单、工单或公告事实表。
|
||||
type UserMessageRead struct {
|
||||
Entity // 公共实体字段
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index;uniqueIndex:ux_user_message_read;comment:读取消息的用户账号内部主键" json:"user_account_id"` // 用户账号内部主键
|
||||
MessageKey string `gorm:"column:message_key;type:varchar(96);not null;uniqueIndex:ux_user_message_read;comment:消息来源类型与业务唯一标识组成的稳定键" json:"message_key"` // 稳定消息键
|
||||
ReadAt time.Time `gorm:"column:read_at;type:timestamptz;not null;comment:用户首次确认已读的时间" json:"read_at"` // 首次已读时间
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&UserMessageRead{}) }
|
||||
func (table *UserMessageRead) TableName() string { return "user_message_read" }
|
||||
@@ -16,6 +16,7 @@ type WalletBank struct {
|
||||
BindID string `gorm:"column:bind_id;type:varchar(128);not null;default:'';uniqueIndex:,where:bind_id <> ''" json:"bind_id"` // 支付渠道绑定标识
|
||||
BankType string `gorm:"column:bank_type;type:varchar(20);not null;default:''" json:"bank_type"` // 银行卡类型
|
||||
Bank string `gorm:"column:bank;type:varchar(64);not null;default:''" json:"bank"` // 所属银行编码
|
||||
IsDefault bool `gorm:"column:is_default;not null;default:false;index;comment:是否为当前钱包默认提现到账卡" json:"is_default"` // 是否为当前钱包默认提现到账卡
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&WalletBank{}) }
|
||||
|
||||
Reference in New Issue
Block a user