用户信息接口

This commit is contained in:
TsMask
2023-08-29 16:14:36 +08:00
parent cc169804cf
commit 70250ce6e6
4 changed files with 1050 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
package service
import (
"errors"
"fmt"
sysUserModel "ems.agt/features/sys_user/model"
sysuserrole "ems.agt/features/sys_user_role"
)
// 实例化服务层 ServiceSysUser 结构体
var NewServiceSysUser = &ServiceSysUser{
sysUserRepository: NewRepoSysUser,
sysUserRoleRepository: sysuserrole.NewRepoSysUserRole,
}
// ServiceSysUser 用户 服务层处理
type ServiceSysUser struct {
// 用户服务
sysUserRepository *RepoSysUser
// 用户与角色服务
sysUserRoleRepository *sysuserrole.RepoSysUserRole
}
// SelectUserPage 根据条件分页查询用户列表
func (r *ServiceSysUser) SelectUserPage(query map[string]any) map[string]any {
return r.sysUserRepository.SelectUserPage(query)
}
// SelectUserList 根据条件查询用户列表
func (r *ServiceSysUser) SelectUserList(sysUser sysUserModel.SysUser) []sysUserModel.SysUser {
return []sysUserModel.SysUser{}
}
// SelectAllocatedPage 根据条件分页查询分配用户角色列表
func (r *ServiceSysUser) SelectAllocatedPage(query map[string]any) map[string]any {
return r.sysUserRepository.SelectAllocatedPage(query)
}
// SelectUserByUserName 通过用户名查询用户
func (r *ServiceSysUser) SelectUserByUserName(userName string) sysUserModel.SysUser {
return r.sysUserRepository.SelectUserByUserName(userName)
}
// SelectUserById 通过用户ID查询用户
func (r *ServiceSysUser) SelectUserById(userId string) sysUserModel.SysUser {
if userId == "" {
return sysUserModel.SysUser{}
}
users := r.sysUserRepository.SelectUserByIds([]string{userId})
if len(users) > 0 {
return users[0]
}
return sysUserModel.SysUser{}
}
// InsertUser 新增用户信息
func (r *ServiceSysUser) InsertUser(sysUser sysUserModel.SysUser) string {
// 新增用户信息
insertId := r.sysUserRepository.InsertUser(sysUser)
if insertId != "" {
// 新增用户角色信息
r.insertUserRole(insertId, sysUser.RoleIDs)
}
return insertId
}
// insertUserRole 新增用户角色信息
func (r *ServiceSysUser) insertUserRole(userId string, roleIds []string) int64 {
if userId == "" || len(roleIds) <= 0 {
return 0
}
sysUserRoles := []sysuserrole.SysUserRole{}
for _, roleId := range roleIds {
// 管理员角色禁止操作只能通过配置指定用户ID分配
if roleId == "" || roleId == "1" {
continue
}
sysUserRoles = append(sysUserRoles, sysuserrole.NewSysUserRole(userId, roleId))
}
return r.sysUserRoleRepository.BatchUserRole(sysUserRoles)
}
// UpdateUser 修改用户信息
func (r *ServiceSysUser) UpdateUser(sysUser sysUserModel.SysUser) int64 {
return r.sysUserRepository.UpdateUser(sysUser)
}
// UpdateUserAndRolePost 修改用户信息同时更新角色和岗位
func (r *ServiceSysUser) UpdateUserAndRolePost(sysUser sysUserModel.SysUser) int64 {
userId := fmt.Sprint(sysUser.Id)
// 删除用户与角色关联
r.sysUserRoleRepository.DeleteUserRole([]string{userId})
// 新增用户角色信息
r.insertUserRole(userId, sysUser.RoleIDs)
return r.sysUserRepository.UpdateUser(sysUser)
}
// DeleteUserByIds 批量删除用户信息
func (r *ServiceSysUser) DeleteUserByIds(userIds []string) (int64, error) {
// 检查是否存在
users := r.sysUserRepository.SelectUserByIds(userIds)
if len(users) <= 0 {
return 0, errors.New("没有权限访问用户数据!")
}
if len(users) == len(userIds) {
// 删除用户与角色关联
r.sysUserRoleRepository.DeleteUserRole(userIds)
// ... 注意其他userId进行关联的表
// 删除用户
rows := r.sysUserRepository.DeleteUserByIds(userIds)
return rows, nil
}
return 0, errors.New("删除用户信息失败!")
}
// CheckUniqueUserName 校验用户名称是否唯一
func (r *ServiceSysUser) CheckUniqueUserName(userName, userId string) bool {
uniqueId := r.sysUserRepository.CheckUniqueUser(sysUserModel.SysUser{
Name: userName,
})
if uniqueId == userId {
return true
}
return uniqueId == ""
}
// CheckUniquePhone 校验手机号码是否唯一
func (r *ServiceSysUser) CheckUniquePhone(phonenumber, userId string) bool {
uniqueId := r.sysUserRepository.CheckUniqueUser(sysUserModel.SysUser{
Phone: phonenumber,
})
if uniqueId == userId {
return true
}
return uniqueId == ""
}
// CheckUniqueEmail 校验email是否唯一
func (r *ServiceSysUser) CheckUniqueEmail(email, userId string) bool {
uniqueId := r.sysUserRepository.CheckUniqueUser(sysUserModel.SysUser{
Email: email,
})
if uniqueId == userId {
return true
}
return uniqueId == ""
}