feat(api): add client app service endpoints
This commit is contained in:
22
backend/api/internal/models/cms_content_read.go
Normal file
22
backend/api/internal/models/cms_content_read.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CmsContentRead 保存用户对强制内容版本的阅读确认。
|
||||
type CmsContentRead struct {
|
||||
Entity // 公共实体字段
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;uniqueIndex:idx_content_read_user_version" json:"user_account_id"` // 用户内部主键
|
||||
CmsContentID uint64 `gorm:"column:cms_content_id;not null;uniqueIndex:idx_content_read_user_version" json:"cms_content_id"` // 内容内部主键
|
||||
VersionNo int `gorm:"column:version_no;not null;uniqueIndex:idx_content_read_user_version" json:"version_no"` // 已确认内容版本
|
||||
ShownAt time.Time `gorm:"column:shown_at;type:timestamptz;not null" json:"shown_at"` // 客户端展示时间
|
||||
ConfirmedAt *time.Time `gorm:"column:confirmed_at;type:timestamptz" json:"confirmed_at"` // 用户确认时间
|
||||
ClientVersion string `gorm:"column:client_version;type:varchar(64);not null;default:''" json:"client_version"` // 客户端版本
|
||||
DeviceIdentity string `gorm:"column:device_identity;type:varchar(128);not null;default:''" json:"device_identity"` // 客户端设备标识
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;uniqueIndex" json:"request_no"` // 确认幂等号
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&CmsContentRead{}) }
|
||||
func (*CmsContentRead) TableName() string { return "cms_content_read" }
|
||||
@@ -1,15 +1,29 @@
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 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 业务字段
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index" json:"user_account_id"` // user_account_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 业务字段
|
||||
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"` // 最近操作人业务标识
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&CsTicket{}) }
|
||||
|
||||
26
backend/api/internal/models/cs_ticket_evidence.go
Normal file
26
backend/api/internal/models/cs_ticket_evidence.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
"time"
|
||||
)
|
||||
|
||||
// CsTicketEvidence 保存工单不可变现场证据。
|
||||
type CsTicketEvidence struct {
|
||||
Entity // 公共实体字段
|
||||
CsTicketID uint64 `gorm:"column:cs_ticket_id;not null;index" json:"cs_ticket_id"` // 工单内部主键
|
||||
EvidenceType string `gorm:"column:evidence_type;type:varchar(32);not null;index" json:"evidence_type"` // 证据阶段或签名类型
|
||||
MediaType string `gorm:"column:media_type;type:varchar(16);not null" json:"media_type"` // 图片、视频或签名
|
||||
FileURI string `gorm:"column:file_uri;type:varchar(512);not null" json:"file_uri"` // 受控上传资源地址
|
||||
CapturedAt time.Time `gorm:"column:captured_at;type:timestamptz;not null;index" json:"captured_at"` // 客户端原始采集时间
|
||||
ReceivedAt time.Time `gorm:"column:received_at;type:timestamptz;not null;index" json:"received_at"` // 服务端接收时间
|
||||
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"` // 采集纬度
|
||||
Source string `gorm:"column:source;type:varchar(32);not null;default:'app'" json:"source"` // 证据来源
|
||||
IntegrityStatus string `gorm:"column:integrity_status;type:varchar(32);not null;default:'unverified'" json:"integrity_status"` // 完整性校验状态
|
||||
OperatorIdentity string `gorm:"column:operator_identity;type:varchar(36);not null;index" json:"operator_identity"` // 采集人员业务标识
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;uniqueIndex" json:"request_no"` // 证据上报幂等号
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&CsTicketEvidence{}) }
|
||||
func (*CsTicketEvidence) TableName() string { return "cs_ticket_evidence" }
|
||||
@@ -1,16 +1,36 @@
|
||||
package models
|
||||
|
||||
import "git.apinb.com/bsm-sdk/core/database"
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
"time"
|
||||
)
|
||||
|
||||
// EcOrder 对应 ec_order,保存电商订单与组织快照。
|
||||
type EcOrder 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"` // order_no 业务字段
|
||||
UserAccountID uint64 `gorm:"column:user_account_id;not null;index" json:"user_account_id"` // user_account_id 业务字段
|
||||
GasStationID uint64 `gorm:"column:gas_station_id;not null;default:0;index" json:"gas_station_id"` // gas_station_id 业务字段
|
||||
DeliveryPointID uint64 `gorm:"column:delivery_point_id;not null;default:0;index" json:"delivery_point_id"` // delivery_point_id 业务字段
|
||||
TotalAmount int64 `gorm:"column:total_amount;not null;default:0;check:total_amount >= 0" json:"total_amount"` // total_amount 业务字段
|
||||
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"` // order_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 业务字段
|
||||
GasStationID uint64 `gorm:"column:gas_station_id;not null;default:0;index" json:"gas_station_id"` // gas_station_id 业务字段
|
||||
DeliveryPointID uint64 `gorm:"column:delivery_point_id;not null;default:0;index" json:"delivery_point_id"` // delivery_point_id 业务字段
|
||||
TotalAmount int64 `gorm:"column:total_amount;not null;default:0;check:total_amount >= 0" json:"total_amount"` // total_amount 业务字段
|
||||
UserAddressID uint64 `gorm:"column:user_address_id;not null;default:0;index" json:"user_address_id"` // 收货地址内部主键
|
||||
Address string `gorm:"column:address;type:varchar(255);not null;default:''" 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;default:''" json:"contact_name"` // 收货联系人快照
|
||||
ContactPhone string `gorm:"column:contact_phone;type:varchar(32);not null;default:''" json:"contact_phone"` // 收货电话快照
|
||||
ProductAmount int64 `gorm:"column:product_amount;not null;default:0;check:product_amount >= 0" json:"product_amount"` // 商品金额,单位分
|
||||
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;default:0;check:payable_amount >= 0" json:"payable_amount"` // 应付金额,单位分
|
||||
PaidAt *time.Time `gorm:"column:paid_at;type:timestamptz" json:"paid_at"` // 支付完成时间
|
||||
Remark string `gorm:"column:remark;type:text;not null;default:''" json:"remark"` // 订单备注
|
||||
LogisticsNo string `gorm:"column:logistics_no;type:varchar(128);not null;default:'';index" json:"logistics_no"` // 物流单号
|
||||
LogisticsCompany string `gorm:"column:logistics_company;type:varchar(128);not null;default:''" json:"logistics_company"` // 物流公司
|
||||
LogisticsStatus int `gorm:"column:logistics_status;not null;default:10;index" json:"logistics_status"` // 独立物流状态
|
||||
ShippedAt *time.Time `gorm:"column:shipped_at;type:timestamptz" json:"shipped_at"` // 发货时间
|
||||
ReceivedAt *time.Time `gorm:"column:received_at;type:timestamptz" json:"received_at"` // 用户收货时间
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&EcOrder{}) }
|
||||
|
||||
@@ -9,12 +9,16 @@ import (
|
||||
// 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"` // 定位精度
|
||||
GasorderTrackID uint64 `gorm:"column:gasorder_track_id;not null;index" json:"gasorder_track_id"` // 轨迹自增主键
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;default:'';uniqueIndex:,where:request_no <> ''" json:"request_no"` // 上报幂等号
|
||||
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"` // 定位发生时间
|
||||
ReceivedAt time.Time `gorm:"column:received_at;type:timestamptz;not null;index" json:"received_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"` // 定位精度
|
||||
Speed string `gorm:"column:speed;type:varchar(32);not null;default:''" json:"speed"` // 定位速度
|
||||
Direction string `gorm:"column:direction;type:varchar(32);not null;default:''" json:"direction"` // 定位方向
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&GasorderTrackPoint{}) }
|
||||
|
||||
@@ -5,15 +5,15 @@ import "git.apinb.com/bsm-sdk/core/database"
|
||||
// StaffAccount 对应 staff_account,是服务人员唯一的档案和 App 登录账户。
|
||||
type StaffAccount struct {
|
||||
Entity // 公共实体字段
|
||||
Username string `gorm:"column:username;type:varchar(64);not null;uniqueIndex" json:"username"` // 登录名称
|
||||
PasswordHash string `gorm:"column:password_hash;type:varchar(255);not null" json:"-"` // 密码哈希
|
||||
Name string `gorm:"column:name;type:varchar(64);not null" json:"name"` // 人员姓名
|
||||
Phone string `gorm:"column:phone;type:varchar(32);not null;default:'';index" json:"phone"` // 联系手机号
|
||||
Avatar string `gorm:"column:avatar;type:varchar(512);not null;default:''" json:"avatar"` // 头像资源地址
|
||||
RoleCode string `gorm:"column:role_code;type:varchar(64);not null;default:''" json:"role_code"` // 服务角色编码
|
||||
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"` // 所属配送点主键
|
||||
WorkStatus string `gorm:"column:work_status;type:varchar(32);not null;default:'off_duty'" json:"work_status"` // 在岗接单状态
|
||||
Username string `gorm:"column:username;type:varchar(64);not null;uniqueIndex" json:"username"` // 登录名称
|
||||
PasswordHash string `gorm:"column:password_hash;type:varchar(255);not null" json:"-"` // 密码哈希
|
||||
Name string `gorm:"column:name;type:varchar(64);not null" json:"name"` // 人员姓名
|
||||
Phone string `gorm:"column:phone;type:varchar(32);not null;default:'';uniqueIndex:idx_staff_account_phone,where:phone <> ''" json:"phone"` // 唯一登录手机号
|
||||
Avatar string `gorm:"column:avatar;type:varchar(512);not null;default:''" json:"avatar"` // 头像资源地址
|
||||
RoleCode string `gorm:"column:role_code;type:varchar(64);not null;default:''" json:"role_code"` // 服务角色编码
|
||||
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"` // 所属配送点主键
|
||||
WorkStatus string `gorm:"column:work_status;type:varchar(32);not null;default:'off_duty'" json:"work_status"` // 在岗接单状态
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&StaffAccount{}) }
|
||||
|
||||
22
backend/api/internal/models/staff_attendance.go
Normal file
22
backend/api/internal/models/staff_attendance.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
"time"
|
||||
)
|
||||
|
||||
// StaffAttendance 保存工作人员上下班不可变记录。
|
||||
type StaffAttendance struct {
|
||||
Entity // 公共实体字段
|
||||
StaffAccountID uint64 `gorm:"column:staff_account_id;not null;index" json:"staff_account_id"` // 工作人员内部主键
|
||||
RoleCode string `gorm:"column:role_code;type:varchar(64);not null" json:"role_code"` // 打卡时岗位快照
|
||||
Action string `gorm:"column:action;type:varchar(16);not null;index" json:"action"` // 上班或下班动作
|
||||
OccurredAt time.Time `gorm:"column:occurred_at;type:timestamptz;not null;index" json:"occurred_at"` // 客户端采集时间
|
||||
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"` // 打卡纬度
|
||||
DeviceIdentity string `gorm:"column:device_identity;type:varchar(128);not null;default:''" json:"device_identity"` // 采集设备标识
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;uniqueIndex" json:"request_no"` // 打卡幂等号
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&StaffAttendance{}) }
|
||||
func (*StaffAttendance) TableName() string { return "staff_attendance" }
|
||||
@@ -5,12 +5,12 @@ import "git.apinb.com/bsm-sdk/core/database"
|
||||
// UserAccount 对应 user_account,是业主客户唯一的档案和用户端登录账户。
|
||||
type UserAccount struct {
|
||||
Entity // 公共实体字段
|
||||
Username string `gorm:"column:username;type:varchar(64);not null;uniqueIndex" json:"username"` // 登录名称
|
||||
PasswordHash string `gorm:"column:password_hash;type:varchar(255);not null" json:"-"` // 密码哈希
|
||||
Name string `gorm:"column:name;type:varchar(64);not null" json:"name"` // 客户姓名
|
||||
Phone string `gorm:"column:phone;type:varchar(32);not null;default:'';index" json:"phone"` // 联系手机号
|
||||
Avatar string `gorm:"column:avatar;type:varchar(512);not null;default:''" json:"avatar"` // 头像资源地址
|
||||
RealName string `gorm:"column:real_name;type:varchar(64);not null;default:''" json:"real_name"` // 实名认证名称
|
||||
Username string `gorm:"column:username;type:varchar(64);not null;uniqueIndex" json:"username"` // 登录名称
|
||||
PasswordHash string `gorm:"column:password_hash;type:varchar(255);not null" json:"-"` // 密码哈希
|
||||
Name string `gorm:"column:name;type:varchar(64);not null" json:"name"` // 客户姓名
|
||||
Phone string `gorm:"column:phone;type:varchar(32);not null;default:'';uniqueIndex:idx_user_account_phone,where:phone <> ''" json:"phone"` // 唯一登录手机号
|
||||
Avatar string `gorm:"column:avatar;type:varchar(512);not null;default:''" json:"avatar"` // 头像资源地址
|
||||
RealName string `gorm:"column:real_name;type:varchar(64);not null;default:''" json:"real_name"` // 实名认证名称
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&UserAccount{}) }
|
||||
|
||||
23
backend/api/internal/models/wallet_recharge_order.go
Normal file
23
backend/api/internal/models/wallet_recharge_order.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/database"
|
||||
"time"
|
||||
)
|
||||
|
||||
// WalletRechargeOrder 保存客户端钱包充值订单。
|
||||
type WalletRechargeOrder struct {
|
||||
Entity // 公共实体字段
|
||||
RechargeStatus int `gorm:"column:recharge_status;not null;default:10;index" json:"recharge_status"` // 充值订单状态
|
||||
WalletBasicID uint64 `gorm:"column:wallet_basic_id;not null;index" json:"wallet_basic_id"` // 钱包内部主键
|
||||
RechargeNo string `gorm:"column:recharge_no;type:varchar(64);not null;uniqueIndex" json:"recharge_no"` // 充值订单号
|
||||
RequestNo string `gorm:"column:request_no;type:varchar(128);not null;uniqueIndex" json:"request_no"` // 创建幂等号
|
||||
Amount int64 `gorm:"column:amount;not null;check:amount > 0" json:"amount"` // 充值金额,单位分
|
||||
Channel string `gorm:"column:channel;type:varchar(32);not null" json:"channel"` // 支付渠道
|
||||
OwnerType string `gorm:"column:owner_type;type:varchar(32);not null;index" json:"owner_type"` // 钱包主体类型
|
||||
OwnerIdentity string `gorm:"column:owner_identity;type:varchar(36);not null;index" json:"owner_identity"` // 钱包主体业务标识
|
||||
CompletedAt *time.Time `gorm:"column:completed_at;type:timestamptz" json:"completed_at"` // 支付完成时间
|
||||
}
|
||||
|
||||
func init() { database.AppendMigrate(&WalletRechargeOrder{}) }
|
||||
func (*WalletRechargeOrder) TableName() string { return "wallet_recharge_order" }
|
||||
Reference in New Issue
Block a user