2025-06-19 10:33:58 +08:00

106 lines
3.2 KiB
Go

package schema
import (
"github.guxuan/haibei/pkg/util"
)
type Customer struct {
util.BaseModel
Name string `json:"name" gorm:"size:128;index;comment:姓名"`
Phone string `json:"phone" gorm:"size:128;index;comment:手机号"`
InviterID uint `json:"inviterId" gorm:"index;comment:邀请人id"`
Birthday string `json:"birthday" gorm:"size:128;index;comment:生日"`
CompanyID uint `json:"companyId" gorm:"index;comment:绑定社区id"`
AreaID uint `json:"areaId" gorm:"index;comment:城市id"`
WxSign string `json:"wxSign" gorm:"size:1024;comment:微信签名token"`
Avatar string `json:"avatar" gorm:"size:1024;comment:头像"`
Grade int `json:"grade" gorm:"not null;default:0;comment:会员等级"`
Balance int `json:"balance" gorm:"not null;default:0;comment:积分余额"`
MentorID string `json:"mentorId" gorm:"index;comment:顾问id"`
Status string `json:"status" gorm:"size:20;index;comment:状态"`
}
type CustomerQueryParam struct {
util.PaginationParam
LikeName string `form:"name" `
LikePhone string `form:"phone" `
CompanyID uint `form:"companyId" `
Grade int `form:"grade" `
InviterId uint `form:"inviterId"`
Status string `form:"status" `
AreaID uint `form:"areaId"`
}
type CustomerQueryOptions struct {
util.QueryOptions
}
// Defining the query result for the `Customer` struct.
type CustomerQueryResult struct {
Data Customers
PageResult *util.PaginationResult
}
// Defining the slice of `Customer` struct.
type Customers []*Customer
// Defining the data structure for creating a `Customer` struct.
type CustomerForm struct {
Name string `json:"name" `
Phone string `json:"phone" `
Birthday string `json:"birthday" `
CompanyID uint `json:"companyId" `
WxSign string `json:"wxSign" `
AreaID uint `json:"areaId"`
InviterID uint `json:"inviterId"`
Avatar string `json:"avatar" `
Grade int `json:"grade" `
Balance int `json:"balance" `
Status string `json:"status" `
}
type CustomerLoginForm struct {
WxSign string `json:"wxSign" binding:"required"`
}
type CustomerBindPhoneForm struct {
Phone string `json:"phone" binding:"required"`
Code string `json:"code" binding:"required"`
Avatar string `json:"avatar" binding:"required"`
Lat float64 `json:"lat" binding:"required"`
Lon float64 `json:"lon" binding:"required"`
}
type CustomerLoginToken struct {
AccessToken string `json:"access_token"` // Access token (JWT)
Phone string `json:"phone"`
TokenType string `json:"token_type"` // Token type (Usage: Authorization=${token_type} ${access_token})
ExpiresAt int64 `json:"expires_at"` // Expired time (Unit: second)
}
// A validation function for the `CustomerForm` struct.
func (a *CustomerForm) Validate() error {
return nil
}
// Convert `CustomerForm` to `Customer` object.
func (a *CustomerForm) FillTo(customer *Customer) error {
customer.Name = a.Name
customer.Phone = a.Phone
customer.Birthday = a.Birthday
customer.CompanyID = a.CompanyID
customer.WxSign = a.WxSign
customer.AreaID = a.AreaID
customer.Avatar = a.Avatar
customer.Grade = a.Grade
customer.InviterID = a.InviterID
customer.Balance = a.Balance
if a.Status != "" {
customer.Status = a.Status
} else {
customer.Status = "enabled"
}
return nil
}