106 lines
3.2 KiB
Go
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
|
|
}
|