Files
lone-services/services/sale/internal/dao/sale.go
T
2026-08-28 15:05:44 +08:00

133 lines
5.5 KiB
Go

package dao
import (
"database/sql/driver"
"encoding/json"
"fmt"
"lone-services/pkg/utils"
)
const (
SaleTypeStaff uint8 = 1 // 销售人员
SaleTypeAgentCorp uint8 = 2 // 销售商(法人)
SaleTypeAgentPerson uint8 = 3 // 销售商(个人)
SaleStatusPending uint8 = 9 // 待处理
SaleStatusApproved uint8 = 1 // 已通过
SaleStatusRejected uint8 = 2 // 未通过
SaleStatusDisabled uint8 = 3 // 禁用
)
type RegionNames struct {
Province string `json:"province"`
City string `json:"city"`
District string `json:"district"`
}
func (r RegionNames) Value() (driver.Value, error) {
buf, err := json.Marshal(r)
if err != nil {
return nil, err
}
return string(buf), nil
}
func (r *RegionNames) Scan(value interface{}) error {
if value == nil {
*r = RegionNames{}
return nil
}
var raw []byte
switch v := value.(type) {
case []byte:
raw = v
case string:
raw = []byte(v)
default:
return fmt.Errorf("unsupported region type: %T", value)
}
if len(raw) == 0 {
*r = RegionNames{}
return nil
}
return json.Unmarshal(raw, r)
}
type SaleCreate struct {
Id int64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
SaleId int64 `gorm:"column:sale_id" json:"sale_id"`
Mobile string `gorm:"column:mobile" json:"mobile"`
Name string `gorm:"column:name" json:"name"`
IdCardFront string `gorm:"column:id_card_front" json:"id_card_front"`
IdCardBack string `gorm:"column:id_card_back" json:"id_card_back"`
BusinessLicense string `gorm:"column:business_license" json:"business_license"`
Region RegionNames `gorm:"column:region;type:json" json:"region"`
ProvinceId int64 `gorm:"column:province_id" json:"province_id"`
CityId int64 `gorm:"column:city_id" json:"city_id"`
DistrictId int64 `gorm:"column:district_id" json:"district_id"`
TerritoryId int64 `gorm:"column:territory_id" json:"territory_id"`
TerritoryName string `gorm:"column:territory_name" json:"territory_name"`
GroupId int64 `gorm:"column:group_id" json:"group_id"`
Address string `gorm:"column:address" json:"address"`
Status uint8 `gorm:"column:status" json:"status"`
Avatar string `gorm:"column:avatar" json:"avatar"`
Account string `gorm:"column:account" json:"account"`
Type uint8 `gorm:"column:type" json:"type"`
Sex uint8 `gorm:"column:sex" json:"sex"`
BirthDate string `gorm:"column:birth_date" json:"birth_date"`
AdminId int64 `gorm:"column:admin_id" json:"admin_id"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
}
type SaleInfo struct {
Id int64 `gorm:"column:id" json:"id"`
SaleId int64 `gorm:"column:sale_id" json:"sale_id"`
Mobile string `gorm:"column:mobile" json:"mobile"`
Name string `gorm:"column:name" json:"name"`
IdCardFront string `gorm:"column:id_card_front" json:"id_card_front"`
IdCardBack string `gorm:"column:id_card_back" json:"id_card_back"`
BusinessLicense string `gorm:"column:business_license" json:"business_license"`
Region RegionNames `gorm:"column:region;type:json" json:"region"`
ProvinceId int64 `gorm:"column:province_id" json:"province_id"`
CityId int64 `gorm:"column:city_id" json:"city_id"`
DistrictId int64 `gorm:"column:district_id" json:"district_id"`
TerritoryId int64 `gorm:"column:territory_id" json:"territory_id"`
TerritoryName string `gorm:"column:territory_name" json:"territory_name"`
GroupId int64 `gorm:"column:group_id" json:"group_id"`
Address string `gorm:"column:address" json:"address"`
Status uint8 `gorm:"column:status" json:"status"`
Avatar string `gorm:"column:avatar" json:"avatar"`
Account string `gorm:"column:account" json:"account"`
Type uint8 `gorm:"column:type" json:"type"`
Sex uint8 `gorm:"column:sex" json:"sex"`
BirthDate string `gorm:"column:birth_date" json:"birth_date"`
Reason string `gorm:"column:reason" json:"reason"`
AdminId int64 `gorm:"column:admin_id" json:"admin_id"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
CreateTime utils.CustomTime `gorm:"column:create_time" json:"create_time"`
UpdateTime utils.CustomTime `gorm:"column:update_time" json:"update_time"`
OriginMobile string `gorm:"-" json:"origin_mobile"`
Group *SaleGroupNameItem `gorm:"-" json:"group,omitempty"`
}
type SaleStatusUpdate struct {
Id int64 `gorm:"column:id;primaryKey" json:"id"`
Name string `gorm:"column:name" json:"name"`
Status uint8 `gorm:"column:status" json:"status"`
Reason string `gorm:"column:reason" json:"reason"`
AdminId int64 `gorm:"column:admin_id" json:"admin_id"`
AdminName string `gorm:"column:admin_name" json:"admin_name"`
}
type SaleNameItem struct {
Id int64 `gorm:"column:id" json:"id"`
Mobile string `gorm:"column:mobile" json:"mobile"`
Name string `gorm:"column:name" json:"name"`
}
type SaleTypeOption struct {
Value uint8 `json:"value"`
Label string `json:"label"`
}