123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- package model
- import (
- "database/sql"
- "fmt"
- "strings"
- "time"
- "git.i2edu.net/i2/go-zero/core/stores/cache"
- "git.i2edu.net/i2/go-zero/core/stores/sqlc"
- "git.i2edu.net/i2/go-zero/core/stores/sqlx"
- "git.i2edu.net/i2/go-zero/core/stringx"
- "git.i2edu.net/i2/go-zero/tools/goctl/model/sql/builderx"
- )
- var (
- sysUserFieldNames = builderx.RawFieldNames(&SysUser{})
- sysUserRows = strings.Join(sysUserFieldNames, ",")
- sysUserRowsExpectAutoSet = strings.Join(stringx.Remove(sysUserFieldNames, "`create_time`", "`update_time`"), ",")
- sysUserRowsWithPlaceHolder = strings.Join(stringx.Remove(sysUserFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
- cacheSysUserIdPrefix = "cache:sysUser:id:"
- cacheSysUserPhonePrefix = "cache:sysUser:phone:"
- cacheSysUserOrgIdPrefix = "cache:sysUser:orgId:"
- )
- type (
- SysUserModel interface {
- Insert(data SysUser) (sql.Result, error)
- FindOne(id string) (*SysUser, error)
- FindOneByPhone(id string) (*SysUser, error)
- Update(data SysUser) error
- Delete(id string) error
- FindOrgById(id string) (*SysUserSchool, error)
- }
- defaultSysUserModel struct {
- sqlc.CachedConn
- table string
- }
- SysUserSchool struct {
- OsId string `db:"os_id"`
- OsName string `db:"os_name"`
- }
- SysUser struct {
- Status sql.NullInt64 `db:"status"`
- Avatar sql.NullString `db:"avatar"`
- LastUpdateTime int64 `db:"last_update_time"`
- Address sql.NullString `db:"address"`
- Password string `db:"password"`
- OrgId sql.NullString `db:"org_id"`
- CreateBy string `db:"create_by"`
- LastUpdateBy string `db:"last_update_by"`
- LoginId string `db:"login_id"`
- Name string `db:"name"`
- CreateTime time.Time `db:"create_time"`
- DelFlag int64 `db:"del_flag"`
- TempId sql.NullString `db:"temp_id"`
- Id string `db:"id"`
- FullName string `db:"full_name"`
- Mobile string `db:"mobile"`
- Email string `db:"email"`
- Gender int64 `db:"gender"`
- Type sql.NullInt64 `db:"type"`
- Domain string `db:"domain"`
- TempValue sql.NullString `db:"temp_value"`
- }
- )
- func NewSysUserModel(conn sqlx.SqlConn, c cache.CacheConf) SysUserModel {
- return &defaultSysUserModel{
- CachedConn: sqlc.NewConn(conn, c),
- table: "`sys_user`",
- }
- }
- func (m *defaultSysUserModel) Insert(data SysUser) (sql.Result, error) {
- query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, sysUserRowsExpectAutoSet)
- ret, err := m.ExecNoCache(query, data.Status, data.Avatar, data.LastUpdateTime, data.Address, data.Password, data.OrgId, data.CreateBy, data.LastUpdateBy, data.LoginId, data.Name, data.DelFlag, data.TempId, data.Id, data.FullName, data.Mobile, data.Email, data.Gender, data.Type, data.Domain, data.TempValue)
- return ret, err
- }
- func (m *defaultSysUserModel) FindOne(id string) (*SysUser, error) {
- var resp SysUser
- query := fmt.Sprintf("select %s from %s where `id` = ? and status = 0 and del_flag = 0 limit 1", sysUserRows, m.table)
- err := m.QueryRowNoCache(&resp, query, id)
- switch err {
- case nil:
- return &resp, nil
- case sqlc.ErrNotFound:
- return nil, ErrNotFound
- default:
- return nil, err
- }
- }
- func (m *defaultSysUserModel) FindOneByPhone(phone string) (*SysUser, error) {
- var resp SysUser
- query := fmt.Sprintf("select %s from %s where `mobile` = ? and status = 0 and del_flag = 0 limit 1 ", sysUserRows, m.table)
- err := m.QueryRowNoCache(&resp, query, phone)
- switch err {
- case nil:
- return &resp, nil
- case sqlc.ErrNotFound:
- return nil, ErrNotFound
- default:
- return nil, err
- }
- }
- func (m *defaultSysUserModel) Update(data SysUser) error {
- sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, data.Id)
- _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
- query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, sysUserRowsWithPlaceHolder)
- return conn.Exec(query, data.Status, data.Avatar, data.LastUpdateTime, data.Address, data.Password, data.OrgId, data.CreateBy, data.LastUpdateBy, data.LoginId, data.Name, data.DelFlag, data.TempId, data.FullName, data.Mobile, data.Email, data.Gender, data.Type, data.Domain, data.TempValue, data.Id)
- }, sysUserIdKey)
- return err
- }
- func (m *defaultSysUserModel) Delete(id string) error {
- sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, id)
- _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
- query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
- return conn.Exec(query, id)
- }, sysUserIdKey)
- return err
- }
- func (m *defaultSysUserModel) formatPrimary(primary interface{}) string {
- return fmt.Sprintf("%s%v", cacheSysUserIdPrefix, primary)
- }
- func (m *defaultSysUserModel) queryPrimary(conn sqlx.SqlConn, v, primary interface{}) error {
- query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", sysUserRows, m.table)
- return conn.QueryRow(v, query, primary)
- }
- func (m *defaultSysUserModel) FindOrgById(id string) (school *SysUserSchool, err error) {
- erpUserOrgIdKey := fmt.Sprintf("%s%v", cacheSysUserOrgIdPrefix, id)
- var resp SysUserSchool
- err = m.QueryRow(&resp, erpUserOrgIdKey, func(conn sqlx.SqlConn, v interface{}) error {
- query := fmt.Sprintf("select sys_user_school.os_id,base_organ_scholl.name os_name from sys_user_school join base_organ_school on sys_user_school.os_id = base_organ_school.id where sys_user_school.`user_id` = ? limit 1")
- return conn.QueryRow(v, query, id)
- })
- switch err {
- case nil:
- return &resp, nil
- case sqlc.ErrNotFound:
- return nil, ErrNotFound
- default:
- return nil, err
- }
- }
|