123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- package model
- import (
- "database/sql/driver"
- "encoding/json"
- "errors"
- "fmt"
- model2 "gas-cylinder-api/common/model"
- log "gogs.baozhida.cn/zoie/OAuth-core/logger"
- coreModel "gogs.baozhida.cn/zoie/OAuth-core/model"
- "gogs.baozhida.cn/zoie/OAuth-core/sdk"
- "gogs.baozhida.cn/zoie/OAuth-core/sdk/config"
- "golang.org/x/crypto/bcrypt"
- "gorm.io/gorm"
- )
- // 省平台用户
- type ProvUser struct {
- UserId string `json:"userId" gorm:"size:48;" 钢瓶规格ignore:"true"` // 用户ID
- Name string `json:"name" gorm:"size:128;"` // 用户姓名
- IdCard string `json:"idCard" gorm:"size:32"` // 身份证号
- No string `json:"no" gorm:"size:32"` // 用户工号
- Phone string `json:"phone" gorm:"size:32"` // 联系电话
- UserType int `json:"userType" gorm:"size:4"` // 用户类型 3-门店人员 4-货车司机 5-充装站人员
- Description string `json:"description" gorm:"size:255"` // 描述
- HireStatus string `json:"hireStatus" gorm:"size:64"` // 聘用状态
- HireTime string `json:"hireTime" gorm:"size:10"` // 聘用日期
- Education string `json:"education" gorm:"size:64"` // 教育程度
- JobCategory string `json:"jobCategory" gorm:"size:64"` // 岗位类别
- PersonQual string `json:"personQual" gorm:"size:128"` // 资质
- Isorders int `json:"isorders" gorm:"size:4"` // 用户类型 0-送气员 1-库管 userType=3时必填
- CmpCode string `json:"cmpCode" gorm:"size:48"` // 所属机
- }
- // 送气人员绑定资质信息《燃气从业资格证》
- type ProvStoreUserBindCertificate struct {
- UserId string `json:"userId,omitempty" gorm:"size:48;" swaggerignore:"true"` // 用户ID
- CertificateNo string `json:"certificateNo,omitempty" gorm:"size:32;"` // 证书编号
- Type int `json:"type,omitempty" gorm:"size:4;default:1"` // 人员类型 1:运输、维护和抢修人员
- IssueAuthority string `json:"issueAuthority,omitempty" gorm:"size:128;"` // 发证机关
- IssueTime string `json:"issueTime,omitempty" gorm:"size:10;"` // 发证时间
- ImgUrl string `json:"imgUrl,omitempty" gorm:"size:255;"` // 资质图片URL地址
- Remarks string `json:"remarks,omitempty" gorm:"size:255;"` // 备注信息
- }
- // 货车司机绑定《道路运输从业人员从业资格证》信息
- type ProvTruckUserBindCertificate struct {
- UserId string `json:"userId,omitempty" gorm:"size:48;" swaggerignore:"true"` // 用户ID
- CertificateNo string `json:"certificateNo,omitempty" gorm:"size:32;"` // 证书编号
- Type int `json:"type,omitempty" gorm:"size:4;default:1"` // 从业资格类型 1:道路危险货物运输押运员
- IssueAuthority string `json:"issueAuthority,omitempty" gorm:"size:64;"` // 发证机关
- IssueTime string `json:"issueTime,omitempty" gorm:"size:10;"` // 发证时间
- FirstIssueTime string `json:"firstIssueTime,omitempty" gorm:"size:10;"` // 首次发证时间
- ExpireTime string `json:"expireTime,omitempty" gorm:"size:10;"` // 有效期
- ImgUrl string `json:"imgUrl,omitempty" gorm:"size:255;"` // 资质图片URL地址
- Remarks string `json:"remarks,omitempty" gorm:"size:255;"` // 备注信息
- }
- type SysUser struct {
- model2.Model
- coreModel.User
- Dept SysDept `json:"dept" gorm:"->"` // 部门
- Role SysRole `json:"role" gorm:"->"` // 角色
- ProvUser ProvUser `json:"provUser"` // 省平台用户信息
- ProvUserId string `json:"provUserId" gorm:"size:48;"` // 省平台用户id
- ProvStoreUserBindCertificate ProvStoreUserBindCertificate `json:"provStoreUserBindCertificate"` // 送气人员绑定资质信息《燃气从业资格证》
- ProvTruckUserBindCertificate ProvTruckUserBindCertificate `json:"provTruckUserBindCertificate"` // 货车司机绑定《道路运输从业人员从业资格证》信息
- model2.ControlBy
- model2.ModelTime
- }
- func (SysUser) TableName() string {
- return "sys_user"
- }
- func (e ProvUser) Value() (driver.Value, error) {
- d, err := json.Marshal(e)
- return string(d), err
- }
- func (e *ProvUser) Scan(src interface{}) error {
- return json.Unmarshal(src.([]byte), e)
- }
- func (e *SysUser) Generate() model2.ActiveRecord {
- o := *e
- return &o
- }
- func (e ProvStoreUserBindCertificate) Value() (driver.Value, error) {
- d, err := json.Marshal(e)
- return string(d), err
- }
- func (e *ProvStoreUserBindCertificate) Scan(src interface{}) error {
- return json.Unmarshal(src.([]byte), e)
- }
- func (e ProvTruckUserBindCertificate) Value() (driver.Value, error) {
- d, err := json.Marshal(e)
- return string(d), err
- }
- func (e *ProvTruckUserBindCertificate) Scan(src interface{}) error {
- return json.Unmarshal(src.([]byte), e)
- }
- func (e *SysUser) GetId() interface{} {
- return e.Id
- }
- // 加密
- func (e *SysUser) Encrypt() (err error) {
- if e.Password == "" {
- return
- }
- var hash []byte
- if hash, err = bcrypt.GenerateFromPassword([]byte(e.Password), bcrypt.DefaultCost); err != nil {
- return
- } else {
- e.Password = string(hash)
- return
- }
- }
- var (
- ErrForbidUpdateSysUser = errors.New("禁止修改系统用户")
- ErrForbidDeleteSysUser = errors.New("禁止删除系统用户")
- )
- func (e *SysUser) BeforeCreate(_ *gorm.DB) error {
- return e.Encrypt()
- }
- func (e *SysUser) BeforeUpdate(_ *gorm.DB) error {
- if e.Username == "admin" {
- return ErrForbidUpdateSysUser
- }
- var err error
- if e.Password != "" {
- err = e.Encrypt()
- }
- return err
- }
- func (e *SysUser) BeforeDelete(_ *gorm.DB) error {
- if e.Username == "admin" {
- return ErrForbidDeleteSysUser
- }
- return nil
- }
- func GetUserCacheKey(id int) string {
- return fmt.Sprintf("oauth:user:%d", id)
- }
- func GetUserCode(id int) (SysUser, error) {
- var err error
- var userModel SysUser
- //准备db
- db := sdk.Runtime.GetDbByKey(config.ApplicationConfig.Host)
- if db == nil {
- err = errors.New("db not exist")
- log.Errorf("host[%s]'s %s", err.Error())
- return userModel, err
- }
- err = db.Preload("Dept").First(&userModel, id).Error
- if err != nil {
- log.Errorf("db error: %s", err)
- err = errors.New("获取用户信息失败")
- return userModel, err
- }
- return userModel, nil
- }
- type SysUserOmit struct {
- Id int `json:"id,omitempty"` // 主键编码
- NickName string `json:"nickName,omitempty"` // 昵称
- ProvUserId string `json:"provUserId,omitempty"` // 省平台用户id
- Phone string `json:"phone,omitempty"` // 手机号
- }
- func (SysUserOmit) TableName() string {
- return "sys_user"
- }
|