package model

import (
	"reflect"
	"time"
)

// SysUser 用户表数据结构体
type SysUser struct {
	Id             int64     `xorm:"pk autoincr" json:"id"`                           //用户ID
	DeptId         int64     `json:"deptId"`                                          //部门ID
	UserName       string    `xorm:"varchar(128)" json:"userName" binding:"required"` //登录用户名
	NickName       string    `xorm:"varchar(128)" json:"nickName" binding:"required"` //用户昵称
	UserType       string    `xorm:"varchar(128)" json:"userType"`                    //用户类型(00系统用户)
	Email          string    `xorm:"varchar(1024)" json:"email"`                      //邮箱
	PhoneNumber    string    `xorm:"varchar(11)" json:"phoneNumber"`                  //手机号
	Sex            string    `xorm:"char(1)" json:"sex"`                              //性别0男1女
	Avatar         string    `xorm:"varchar(300)" json:"avatar"`                      //头像路径
	Password       string    `xorm:"varchar(128)" json:"-" binding:"required"`        //密码
	Status         string    `xorm:"char(1)" json:"status"`                           //状态 0正常1停用
	DelFlag        string    `xorm:"char(1)" json:"delFlag"`                          //0正常1删除
	NewVoucherFlag string    `xorm:"char(1)" json:"newVoucherFlag"`                   //是否已领取新人券0否1是
	LoginIp        string    `xorm:"varchar(128)" json:"loginIp"`                     //登录ip
	LoginDate      time.Time `json:"loginDate"`                                       //登录时间
	Openid         string    `xorm:"varchar(255)" json:"openid"`                      //微信用户openid
	SessionKey     string    `xorm:"varchar(255)" json:"sessionKey"`                  //微信登录会话key
	Integral       int       `xorm:"int(11)" json:"integral"`                         //积分
	GradeScore     int       `xorm:"int(11)" json:"gradeScore"`                       //会员等级分
	LevelId        int64     `xorm:"bigint(20)" json:"levelId"`                       //会员等级id
	CreateTime     time.Time `xorm:"created" json:"createTime"`                       //创建时间
	CreateBy       string    `json:"createBy"`                                        //创建人
	UpdateTime     time.Time `json:"updateTime"`                                      //更新时间
	UpdateBy       string    `json:"updateBy"`                                        //更新人
	LastOrderTime  time.Time `json:"lastOrderTime"`                                   //最后下单时间
	Balance        string    `xorm:"decimal(8,2)" json:"balance"`                     //余额
	Remark         string    `json:"remark"`                                          //备注
	CompanyId      int64     `excel:"name=公司Id" xorm:"bigint(20)" json:"companyId"  ` //公司Id
}

func (receiver SysUser) TableName() string {
	return "sys_user"
}

// IsAdmin 判断用户是不是管理员
func (u SysUser) IsAdmin(id int64) bool {
	return id > 0 && 1 == id
}

func (a SysUser) IsEmpty() bool {
	return reflect.DeepEqual(a, SysUser{})
}