123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package dao
- import (
- "github.com/druidcaesa/gotool"
- "time"
- "ulink-admin/frame"
- "ulink-admin/modules/system/models/model"
- "ulink-admin/modules/system/models/req"
- "ulink-admin/modules/system/models/response"
- "ulink-admin/pkg/base"
- "ulink-admin/pkg/page"
- "xorm.io/xorm"
- )
- type UserDao struct {
- base.BaseDao
- }
- // 查询公共sql
- func (d UserDao) querySql() *xorm.Session {
- return base.GetSession().Session.Table([]string{"sys_user", "u"})
- //.Join("LEFT", []string{"sys_dept", "d"}, "u.dept_id = d.id")
- //Join("LEFT", []string{"sys_user_role", "ur"}, "u.id = ur.user_id").
- //Join("LEFT", []string{"sys_role", "r"}, "r.id = ur.role_id")
- }
- // Find 查询用户集合
- func (d UserDao) Page(query *req.UserQuery) ([]*response.UserResponse, int64) {
- resp := make([]*response.UserResponse, 0)
- sql := d.querySql()
- if !gotool.StrUtils.HasEmpty(query.UserName) {
- sql.And("u.user_name like concat('%',?,'%')", query.UserName)
- }
- if !gotool.StrUtils.HasEmpty(query.Status) {
- sql.And("u.status = ?", query.Status)
- }
- if !gotool.StrUtils.HasEmpty(query.PhoneNumber) {
- sql.And("u.phone_number like concat('%',?,'%')", query.PhoneNumber)
- }
- if !gotool.StrUtils.HasEmpty(query.BeginTime) {
- sql.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime)
- }
- if !gotool.StrUtils.HasEmpty(query.EndTime) {
- sql.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime)
- }
- if query.Id > 0 {
- sql.And("u.dept_id = ? OR u.dept_id in ( SELECT t.id FROM sys_dept t WHERE find_in_set(?, ancestors))", query.Id, query.Id)
- }
- if !gotool.StrUtils.HasEmpty(query.UserType) {
- sql.And("u.user_type = ?", query.UserType)
- }
- if !base.GetCurUser().IsAdmin {
- sql.And("u.company_id = ?", base.GetCurUser().ComponyId)
- }
- total, err := sql.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).FindAndCount(&resp)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- return nil, 0
- }
- return resp, total
- }
- // Find 查询用户集合
- func (d UserDao) List(query *req.UserQuery, list *[]model.SysUser) {
- sql := d.querySql()
- if !gotool.StrUtils.HasEmpty(query.UserName) {
- sql.And("u.user_name like concat('%',?,'%')", query.UserName)
- }
- if !gotool.StrUtils.HasEmpty(query.Status) {
- sql.And("u.status = ?", query.Status)
- }
- if !gotool.StrUtils.HasEmpty(query.PhoneNumber) {
- sql.And("u.phone_number like concat('%',?,'%')", query.PhoneNumber)
- }
- if !gotool.StrUtils.HasEmpty(query.BeginTime) {
- sql.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime)
- }
- if !gotool.StrUtils.HasEmpty(query.EndTime) {
- sql.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime)
- }
- if query.Id > 0 {
- sql.And("u.dept_id = ? OR u.dept_id in ( SELECT t.id FROM sys_dept t WHERE find_in_set(?, ancestors))", query.Id, query.Id)
- }
- if !gotool.StrUtils.HasEmpty(query.UserType) {
- sql.And("u.user_type = ?", query.UserType)
- }
- if !base.GetCurUser().IsAdmin {
- sql.And("u.company_id = ?", base.GetCurUser().ComponyId)
- }
- err := sql.Find(list)
- if err != nil {
- frame.Throw(frame.SQL_CODE, err.Error())
- }
- }
- // GetUserByUserName 根据用户名查询用户数据
- func (d UserDao) GetUserByUserName(user model.SysUser) *model.SysUser {
- i, err := base.SqlDB.Get(&user)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- return nil
- }
- if i {
- return &user
- }
- return nil
- }
- // CheckEmailUnique 校验邮箱是否存在
- func (d UserDao) CheckEmailUnique(user *req.UserBody) *model.SysUser {
- if gotool.StrUtils.HasEmpty(user.Email) {
- return nil
- }
- sysUser := model.SysUser{}
- session := base.GetSession().Session.Table("sys_user")
- session.Cols("id", "email")
- session.Where("email = ?", user.Email)
- if user.Id > 0 {
- session.And("id != ?", user.Id)
- }
- get, _ := session.Limit(1).Get(&sysUser)
- if !get {
- return nil
- }
- return &sysUser
- }
- // CheckPhoneNumUnique 校验手机号是否存在
- func (d UserDao) CheckPhoneNumUnique(body *req.UserBody) *model.SysUser {
- if gotool.StrUtils.HasEmpty(body.PhoneNumber) {
- return nil
- }
- sysUser := model.SysUser{}
- session := base.GetSession().Session.Table("sys_user")
- session.Cols("id", "phone_number")
- session.Where("phone_number = ?", body.PhoneNumber)
- if body.Id > 0 {
- session.And("id != ?", body.Id)
- }
- get, _ := session.Limit(1).Get(&sysUser)
- if !get {
- return nil
- }
- return &sysUser
- }
- // ResetPwd 修改用户密码数据库操作
- func (d UserDao) ResetPwd(body *req.UserBody) int64 {
- user := model.SysUser{
- Id: body.Id,
- Password: body.Password,
- }
- session := base.GetSession().Session
- _ = session.Begin()
- _, err := session.Where("id = ?", user.Id).Cols("password").Update(&user)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- _ = session.Rollback()
- return 0
- }
- _ = session.Commit()
- return 1
- }
- // GetAllocatedList 查询未分配用户角色列表
- func (d UserDao) GetAllocatedList(query *req.UserQuery) ([]*response.UserResponse, int64) {
- resp := make([]*response.UserResponse, 0)
- session := base.GetSession().Session
- session.Table([]string{"sys_user", "u"}).Distinct("u.id", "u.user_name", "u.nick_name", "u.email", "u.phone_number", "u.status", "u.create_time").
- //Join("LEFT", []string{"sys_dept", "d"}, "u.dept_id = d.id").
- Join("LEFT", []string{"sys_user_role", "ur"}, "u.id = ur.user_id").
- Join("LEFT", []string{"sys_role", "r"}, "r.id = ur.role_id").Where("u.del_flag = '0'").And("r.id = ?", query.Id)
- if gotool.StrUtils.HasNotEmpty(query.UserName) {
- session.And("u.user_name like concat('%', ?, '%')", query.UserName)
- }
- if gotool.StrUtils.HasNotEmpty(query.PhoneNumber) {
- session.And("u.phone_number like concat('%', ?, '%')", query.PhoneNumber)
- }
- total, err := session.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).FindAndCount(&resp)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- return nil, 0
- }
- return resp, total
- }
- // GetUnallocatedList 查询未分配用户角色列表
- func (d UserDao) GetUnallocatedList(query *req.UserQuery) ([]*response.UserResponse, int64) {
- resp := make([]*response.UserResponse, 0)
- session := base.GetSession().Session
- session.Table([]string{"sys_user", "u"}).Distinct("u.id", "u.user_name", "u.nick_name", "u.email", "u.phone_number", "u.status", "u.create_time").
- //Join("LEFT", []string{"sys_dept", "d"}, "u.dept_id = d.id").
- Join("LEFT", []string{"sys_user_role", "ur"}, "u.id = ur.user_id").
- Join("LEFT", []string{"sys_role", "r"}, "r.id = ur.role_id").Where("u.del_flag = '0'").And("r.id = ? or r.id IS NULL", query.Id).
- And("u.id not in (select u.id from sys_user u inner join sys_user_role ur on u.id = ur.user_id and ur.role_id = ?)", query.Id)
- if gotool.StrUtils.HasNotEmpty(query.UserName) {
- session.And("u.user_name like concat('%', ?, '%')", query.UserName)
- }
- if gotool.StrUtils.HasNotEmpty(query.PhoneNumber) {
- session.And("u.phone_number like concat('%', ?, '%')", query.PhoneNumber)
- }
- total, err := session.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).FindAndCount(&resp)
- if err != nil {
- gotool.Logs.ErrorLog().Println(err)
- return nil, 0
- }
- return resp, total
- }
- // UpdatePwd 修改密码
- func (d UserDao) UpdatePwd(id int64, hash string) {
- user := model.SysUser{}
- user.Id = id
- user.Password = hash
- session := base.GetSession().Session
- _ = session.Begin()
- _, err := session.Cols("password").Where("id = ?", id).Update(&user)
- if err != nil {
- _ = session.Rollback()
- frame.Throw(frame.SQL_CODE, "更新密码错误:"+err.Error())
- }
- _ = session.Commit()
- }
- // UpdateAvatar 修改头像
- func (d UserDao) UpdateAvatar(info *model.SysUser) {
- user := model.SysUser{
- Avatar: info.Avatar,
- Id: info.Id,
- UpdateBy: info.UserName,
- UpdateTime: time.Now(),
- }
- session := base.GetSession().Session
- _ = session.Begin()
- _, err := session.Cols("avatar", "update_by", "update_time").Where("id = ?", user.Id).Update(&user)
- if err != nil {
- _ = session.Rollback()
- frame.Throw(frame.SQL_CODE, "更新个人信息错误:"+err.Error())
- }
- _ = session.Commit()
- }
- func (d UserDao) UpdateStatus(id int64, status string) {
- user := model.SysUser{}
- user.Id = id
- user.Status = status
- session := base.GetSession().Session
- _ = session.Begin()
- _, err := session.Cols("status").Where("id = ?", id).Update(&user)
- if err != nil {
- _ = session.Rollback()
- frame.Throw(frame.SQL_CODE, "更新状态错误:"+err.Error())
- }
- _ = session.Commit()
- }
|