You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.7 KiB
80 lines
3.7 KiB
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/pkg/errors"
|
|
"go.uber.org/zap"
|
|
"hudongzhuanjia/logger"
|
|
"time"
|
|
|
|
"github.com/ouxuanserver/osmanthuswine/src/core"
|
|
"github.com/ouxuanserver/osmanthuswine/src/helper"
|
|
)
|
|
|
|
const CustomerTN = TableNamePrefix + "customer"
|
|
|
|
//客户表
|
|
type Customer struct {
|
|
Id int64 `json:"id" xorm:"not null pk autoincr comment('主键') INT(11)"`
|
|
Activities []*Activity `json:"activities" xorm:"-" description:"用户创建的主活动"`
|
|
Nickname string `json:"nickname" xorm:"not null default('') comment('昵称') VARCHAR(255)"`
|
|
Username string `json:"username" xorm:"not null default('') comment('用户名') VARCHAR(255)"`
|
|
Password string `json:"-" xorm:"not null default('') comment('密码') VARCHAR(255)"`
|
|
Openid string `json:"open_id" xorm:"not null default('') comment('openid') VARCHAR(128)"`
|
|
Token string `json:"token" xorm:"not null default('') comment('登陆凭证token') VARCHAR(255)"`
|
|
Balance float64 `json:"balance" xorm:"not null default(0.00) comment('余额') DECIMAL(18)"`
|
|
SmsCode string `json:"sms_code" xorm:"not null default('') comment('短信验证码') VARCHAR(128)"`
|
|
AreaId int64 `json:"area_id" xorm:"not null default(0) comment('地区id') INT(11)"` // 子账号的地区
|
|
ActivityId int64 `json:"activity_id" xrom:"not null default(0) comment('主活动id') INT(11)"`
|
|
HeadImg string `json:"head_img" xorm:"not null default('') comment('头像') VARCHAR(255)"`
|
|
Email string `json:"email" xorm:"not null default('') comment('邮箱') VARCHAR(128)"`
|
|
Phone string `json:"phone" xorm:"not null default('') comment('电话号码') VARCHAR(128)"`
|
|
QqOpenid string `json:"qq_openid" xorm:"not null default('') comment('qq openid') VARCHAR(255)"`
|
|
Tag string `json:"tag" xorm:"-" description:"tag ws过滤信息"`
|
|
Pid int64 `json:"pid" xorm:"not null default(0) comment('上级账号,该值为空时不允许登陆web客户端') INT(11)"` // 可能判断是否为子账号h
|
|
RoleId int64 `json:"role_id" xorm:"not null default(4) comment('1超级管理员|2平台管理员|3普通管理员|4代理会员|5渠道会员|6普通会员') INT(11)"`
|
|
TopId int64 `json:"top_id" xorm:"not null default(0) comment('角色的上级id') INT(11)"`
|
|
IsDelete bool `json:"-" xorm:"not null default(0) comment('软删除') TINYINT(1)"`
|
|
CreatedAt time.Time `json:"-" xorm:"not null created comment('创建时间') DATETIME"`
|
|
UpdatedAt time.Time `json:"-" xorm:"not null updated comment('更新时间') DATETIME"`
|
|
}
|
|
|
|
func (t *Customer) TableName() string {
|
|
return CustomerTN
|
|
}
|
|
|
|
//根据账号和密码验证用户
|
|
func (t *Customer) Author(name, pwd string) error {
|
|
exist, err := core.GetXormAuto().Where("(phone=? or email=?) and role_id=? and is_delete=0",
|
|
name, name, 6).Get(t)
|
|
if err != nil {
|
|
logger.Error("验证用户失败",
|
|
zap.Error(err),
|
|
zap.String("name", name),
|
|
zap.String("pwd", pwd))
|
|
return errors.WithStack(err)
|
|
}
|
|
if !exist {
|
|
return errors.New("用户名错误,请重新输入")
|
|
}
|
|
|
|
if t.Pid == 0 {
|
|
pwd = helper.Md5(fmt.Sprintf("hdzj==%s", pwd))
|
|
}
|
|
if t.Password != pwd {
|
|
return errors.New("密码错误,请重新输入")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (t *Customer) GetByOpenid(openid string) (bool, error) {
|
|
return core.GetXormAuto().Where("is_delete=0 and openid=?", openid).Get(t)
|
|
}
|
|
|
|
func (t *Customer) GetByQQOpenid(openid string) (bool, error) {
|
|
return core.GetXormAuto().Where("is_delete=0 and qq_openid=?", openid).Get(t)
|
|
}
|
|
|
|
func (t *Customer) GetByActivityIdAndAreaId(activityId, areaId interface{}) (bool, error) {
|
|
return core.GetXormAuto().Where("is_delete=0 and activity_id=? and area_id=?", activityId, areaId).Get(t)
|
|
}
|