package service import ( "errors" "fmt" sysUserModel "be.ems/features/sys_user/model" sysuserrole "be.ems/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("no permission to access user data") } if len(users) == len(userIds) { // 删除用户与角色关联 r.sysUserRoleRepository.DeleteUserRole(userIds) // ... 注意其他userId进行关联的表 // 删除用户 rows := r.sysUserRepository.DeleteUserByIds(userIds) return rows, nil } return 0, errors.New("failed to delete user information") } // CheckUniqueUserName 校验用户名称是否唯一 func (r *ServiceSysUser) CheckUniqueUserName(accountId, userId string) bool { uniqueId := r.sysUserRepository.CheckUniqueUser(sysUserModel.SysUser{ AccountId: accountId, }) 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 == "" }