123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762 |
- package service
-
- import (
- "database/sql"
- "strconv"
- "strings"
- "time"
-
- "XT_New/models"
- "XT_New/utils"
-
- "github.com/jinzhu/gorm"
- )
-
- func GetRoles(orgID int64, appID int64, page int, count int) ([]*models.Role, int, error) {
- var roles []*models.Role
- var totalCount int
- err := readUserDb.Model(&models.Role{}).
- Where("org_id = ? AND app_id = ?", orgID, appID).
- Count(&totalCount).
- Order("ctime asc").Limit(count).Offset((page - 1) * count).
- Find(&roles).
- Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return make([]*models.Role, 0), 0, nil
- } else {
- return nil, 0, err
- }
- }
- return roles, totalCount, nil
- }
-
- func GetAppRole(orgID int64, appID int64, adminUserID int64) (*models.App_Role, error) {
- var appRole models.App_Role
- err := readUserDb.Model(models.App_Role{}).Preload("AdminUser", "status = 1").Where("org_id = ? and app_id = ? and admin_user_id = ?", orgID, appID, adminUserID).First(&appRole).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- if len(appRole.RoleIds) > 0 {
- role_ids := strings.Split(appRole.RoleIds, ",")
- for _, item := range role_ids {
- id, _ := strconv.ParseInt(item, 10, 64)
- if id != 0 {
- role, _ := GetRoleByRoleID(id)
- if role != nil {
- if role.IsSystem == 1 && role.RoleName == "子管理员" {
- appRole.IsSubSuperAdmin = true
- }
- }
- }
- }
- }
-
- return &appRole, nil
- }
-
- func CreateRole(adminUserID int64, orgID int64, appID int64, name string, intro string) (*models.Role, error) {
- role := models.Role{
- RoleName: name,
- RoleIntro: intro,
- Creator: adminUserID,
- OrgId: orgID,
- AppId: appID,
- IsSuperAdmin: false,
- Status: 1,
- CreateTime: time.Now().Unix(),
- ModifyTime: time.Now().Unix(),
- }
- tx := writeUserDb.Begin()
- if err := tx.Create(&role).Error; err != nil {
- tx.Rollback()
- return nil, err
- }
- tx.Commit()
- return &role, nil
- }
-
- func GetRoleByRoleID(roleID int64) (*models.Role, error) {
- var role models.Role
- err := readUserDb.Model(&models.Role{}).Where("id = ?", roleID).First(&role).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- }
- return nil, err
- } else {
- return &role, nil
- }
- }
-
- func ModifyRole(role *models.Role) error {
- tx := writeUserDb.Begin()
- if err := tx.Save(role).Error; err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit().Error
- }
-
- // 拥有xx角色的管理员的数量
- func RoleAdminUserCount(orgID int64, appID int64, roleID int64) (int, error) {
- var count int
- err := readUserDb.Model(models.App_Role{}).
- Where("org_id = ? AND app_id = ? AND role_id = ? AND status = 1", orgID, appID, roleID).
- Count(&count).
- Error
- if err != nil {
- return 0, err
- } else {
- return count, nil
- }
- }
-
- type AdminUserManageViewModel struct {
- AdminUserId int `gorm:"admin_user_id" json:"user_id"`
- UserName string `gorm:"user_name" json:"user_name"`
- RoleName string `gorm:"role_name" json:"role_name"`
- UserTitle int `gorm:"user_title" json:"user_title"`
- Ip string `gorm:"ip" json:"ip"`
- Ctime int64 `gorm:"ctime" json:"last_login_time"`
- Status int `gorm:"status" json:"status"`
- Avatar string `gorm:"avatar" json:"avatar"`
- RoleIds string `gorm:"role_ids" json:"role_ids"`
- // LastLoginTimeStr string `gorm:"-" json:"last_login_time_formatted"`
- TitleName string `gorm:"-" json:"title_name"`
- IsSubSuperAdmin bool `gorm:"-" json:"is_sub_super_admin"`
- //mobile string `gorm:"-" json:"mobile"`
- }
-
- func GetAdminUsersAndLoginInfo(orgID int64, appID int64, page int, count int) ([]*AdminUserManageViewModel, int, error) {
- if count <= 0 {
- return []*AdminUserManageViewModel{}, 0, nil
- }
- if page < 1 {
- page = 1
- }
- var viewModels []*AdminUserManageViewModel = make([]*AdminUserManageViewModel, 0)
- rows, err := readUserDb.Raw("SELECT u_a_r.admin_user_id, u_a_r.user_name, u_a_r.user_title, u_l.ip, u_l.ctime, u_a_r.status,u_a_r.avatar,u_a_r.role_ids FROM sgj_user_admin_role AS u_a_r LEFT JOIN (SELECT * FROM (SELECT admin_user_id, org_id, app_id, ip, ctime FROM sgj_user_admin_login_log WHERE org_id = ? AND app_id = ? ORDER BY ctime DESC) AS t GROUP BY admin_user_id) AS u_l ON u_a_r.org_id = u_l.org_id AND u_a_r.app_id = u_l.app_id AND u_a_r.admin_user_id = u_l.admin_user_id WHERE u_a_r.org_id = ? AND u_a_r.app_id = ? GROUP BY u_a_r.admin_user_id LIMIT ? OFFSET ?;", orgID, appID, orgID, appID, count, (page-1)*count).Rows()
- defer rows.Close()
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return viewModels, 0, nil
- } else {
- return nil, 0, err
- }
- }
- for rows.Next() {
- var viewModel AdminUserManageViewModel
- readUserDb.ScanRows(rows, &viewModel)
- title, _ := models.UserTitle[viewModel.UserTitle]
- viewModel.TitleName = title
- // if viewModel.Ctime == 0 {
- // viewModel.LastLoginTimeStr = ""
- // } else {
- // loginTime := time.Unix(viewModel.Ctime, 0)
- // viewModel.LastLoginTimeStr = loginTime.Format("2006-01-02 15:04")
- // }
- viewModels = append(viewModels, &viewModel)
- }
-
- for _, item := range viewModels {
- if len(item.RoleIds) > 0 {
- ids := strings.Split(item.RoleIds, ",")
- for _, id := range ids {
- id, _ := strconv.ParseInt(id, 10, 64)
- if id != 0 {
- role, _ := GetRoleByRoleID(id)
- if role != nil {
- if role.IsSystem == 1 && role.RoleName == "子管理员" {
- item.IsSubSuperAdmin = true
- }
-
- if len(item.RoleName) == 0 {
- item.RoleName = role.RoleName
- } else {
- item.RoleName = item.RoleName + "," + role.RoleName
- }
- }
- }
- }
-
- }
-
- //admin, _ := GetAdminUserByUserID(int64(item.AdminUserId))
- //item.mobile = admin.Mobile
-
- }
-
- total := 0
- //readUserDb.Table("sgj_user_admin_role as u_a_r").Joins("join sgj_user_role as u_r on u_r.org_id = u_a_r.org_id AND u_r.app_id = u_a_r.app_id AND u_r.id = u_a_r.role_id").Where("u_a_r.org_id = ? AND u_a_r.app_id = ?", orgID, appID).Count(&total)
- return viewModels, total, nil
- }
-
- func GetValidRoleCount(orgID int64, appID int64, superAdminUserID int64) (int, error) {
- var count int
- err := readUserDb.Model(models.Role{}).
- Where("org_id = ? AND app_id = ? AND creator = ? AND is_super_admin = 0 AND status = 1", orgID, appID, superAdminUserID).
- Count(&count).
- Error
- if err != nil {
- return 0, err
- } else {
- return count, nil
- }
- }
-
- func GetAllValidRoles(orgID int64, appID int64) ([]*models.Role, error) {
- var roles []*models.Role
- err := readUserDb.Model(models.Role{}).
- Where("org_id = ? AND app_id = ? AND status = 1", orgID, appID).
- Order("number desc,ctime").
- Find(&roles).
- Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return make([]*models.Role, 0), nil
- } else {
- return nil, err
- }
- }
- return roles, nil
- }
-
- func IsRoleExist(orgID int64, appID int64, roleID int64) (bool, error) {
- var count int
- err := readUserDb.Model(models.Role{}).Where("org_id = ? AND app_id = ? AND id = ? AND status = 1", orgID, appID, roleID).Count(&count).Error
- if err != nil {
- return false, err
- } else {
- return count > 0, nil
- }
- }
-
- type AdminUserEditViewModel struct {
- AdminUserId int64 `gorm:"admin_user_id" json:"user_id"`
- UserName string `gorm:"user_name" json:"user_name"`
- Mobile string `gorm:"mobile" json:"mobile"`
- UserType int `gorm:"user_type" json:"user_type"`
- UserTitle int `gorm:"user_title" json:"user_title"`
- Intro string `gorm:"intro" json:"intro"`
- RoleId int64 `gorm:"role_id" json:"role_id"`
- }
-
- func GetGeneralAdminUser(orgID int64, appID int64, user_id int64) (*AdminUserEditViewModel, error) {
- rows, err := readUserDb.Raw("SELECT u_a.mobile, u_a_r.admin_user_id, u_a_r.user_name, u_a_r.user_type, u_a_r.user_title, u_a_r.intro, u_a_r.role_id FROM sgj_user_admin AS u_a, sgj_user_admin_role AS u_a_r WHERE u_a.id = u_a_r.admin_user_id AND u_a.id = ? AND u_a_r.status = 1 AND u_a_r.org_id = ? AND u_a_r.app_id = ?;", user_id, orgID, appID).Rows()
- defer rows.Close()
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return nil, nil
- } else {
- return nil, err
- }
- }
- if rows.Next() {
- var viewModel AdminUserEditViewModel
- err := readUserDb.ScanRows(rows, &viewModel)
- if err != nil {
- return nil, err
- } else {
- return &viewModel, nil
- }
- }
- return nil, nil
- }
-
- func SaveAppRole(appRole *models.App_Role) error {
- tx := writeUserDb.Begin()
- if err := tx.Model(&models.App_Role{}).Save(appRole).Error; err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit().Error
- }
-
- func IsMobileDidUsedAtApp(orgID int64, appID int64, mobile string) (bool, error) {
- var count int
- rows, err := readUserDb.Raw("select count(u_a.id) as count from sgj_user_admin as u_a, sgj_user_admin_role as u_a_r where u_a_r.org_id = ? and u_a_r.app_id = ? and u_a.mobile = ? and u_a.id = u_a_r.admin_user_id;", orgID, appID, mobile).Rows()
- defer rows.Close()
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return false, nil
- } else {
- return true, err
- }
- }
- if rows.Next() {
- rows.Scan(&count)
- return count > 0, nil
- }
- return true, nil
- }
-
- func IsUserSuperAdminWithMobile(mobile string) (bool, error) {
- var user models.AdminUser
- err := readUserDb.Where("mobile = ?", mobile).First(&user).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return false, nil
- } else {
- return false, err
- }
- }
- return user.IsSuperAdmin, nil
- }
-
- func CreateGeneralAdminUser(orgID int64, appID int64, mobile string, name string, userTitle string, roleIds string, user_type int, user_title int) (*models.AdminUser, string, error) {
- now := time.Now().Unix()
- tx := writeUserDb.Begin()
- var adminUser models.AdminUser
- err := readUserDb.Where("mobile = ? AND status = 1", mobile).First(&adminUser).Error
- password := ""
- if err != nil {
- if err != gorm.ErrRecordNotFound {
- return nil, "", err
- } else {
- password = utils.RandomNumberString(6)
- adminUser.Mobile = mobile
- adminUser.Password = utils.String2md5(password)
- adminUser.IsSuperAdmin = false
- adminUser.Status = 1
- adminUser.CreateTime = now
- adminUser.ModifyTime = now
- if createErr := tx.Create(&adminUser).Error; createErr != nil {
- tx.Rollback()
- return nil, "", createErr
- }
- }
- }
- app_role := models.App_Role{
- AdminUserId: adminUser.Id,
- OrgId: orgID,
- AppId: appID,
- Avatar: "",
- UserName: name,
- UserTitleName: userTitle,
- UserTitle: int8(user_title),
- UserType: int8(user_type),
- Status: 1,
- CreateTime: now,
- ModifyTime: now,
- RoleIds: roleIds,
- }
- if createApp_RoleErr := tx.Create(&app_role).Error; createApp_RoleErr != nil {
- tx.Rollback()
- return nil, "", createApp_RoleErr
- }
-
- tx.Commit()
- return &adminUser, password, nil
- }
-
- type PurviewTreeViewModel struct {
- ID int64 `json:"id"`
- PID int64 `json:"pid"`
- Name string `json:"name"`
- Childs []*PurviewTreeViewModel `json:"childs"`
- Number int64 `json:"number"`
- }
-
- func GetAllGeneralPurviewVMsProcessed(module int) ([]*PurviewTreeViewModel, error) {
- var originPurviews []*models.Purview
- getPurviewErr := readUserDb.Model(models.Purview{}).Where("module = ? AND status = 1 AND super_admin_exclusive = 0", module).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
- if getPurviewErr != nil {
- return nil, getPurviewErr
- }
- // 加工这些规则:树形化
- purviewVMs := make([]*PurviewTreeViewModel, 0)
- pid_childs := make(map[int64][]*PurviewTreeViewModel)
- for _, purview := range originPurviews {
- // warning:下面这个算法只适用最多两层树形结构的菜单,对于两层以上的会丢失掉第三层及其以下的节点
- // 因为取出 originPurviews 的时候已经排过序了,所以顶级节点肯定最先处理,不需要担心子节点比父节点先处理
- pvm := &PurviewTreeViewModel{
- ID: purview.Id,
- PID: purview.Parentid,
- Name: purview.Name,
- Number: 2,
- }
- if purview.Parentid == 0 {
- purviewVMs = append(purviewVMs, pvm)
- } else {
- childs := pid_childs[purview.Parentid]
- if childs == nil {
- childs = make([]*PurviewTreeViewModel, 0)
- }
- childs = append(childs, pvm)
- pid_childs[purview.Parentid] = childs
- }
- }
-
- for _, vm := range purviewVMs {
- vm.Childs = pid_childs[vm.ID]
- }
-
- return purviewVMs, nil
- }
-
- func GetAllGeneralFuncPurviewVMsProcessed() ([]*PurviewTreeViewModel, error) {
- var originPurviews []*models.SgjUserOperatePurview
- getPurviewErr := readUserDb.Model(models.SgjUserOperatePurview{}).Where(" status = 1").Order("number asc").Find(&originPurviews).Error
- if getPurviewErr != nil {
- return nil, getPurviewErr
- }
- // 加工这些规则:树形化
- purviewVMs := make([]*PurviewTreeViewModel, 0)
- for _, purview := range originPurviews {
- // warning:下面这个算法只适用最多两层树形结构的菜单,对于两层以上的会丢失掉第三层及其以下的节点
- // 因为取出 originPurviews 的时候已经排过序了,所以顶级节点肯定最先处理,不需要担心子节点比父节点先处理
- pvm := &PurviewTreeViewModel{
- ID: purview.ID,
- PID: purview.Parentid,
- Name: purview.Name,
- }
- purviewVMs = append(purviewVMs, pvm)
-
- }
-
- return purviewVMs, nil
- }
-
- func GetRolePurviewIds(roleID int64) (string, error) {
- var rolePurview models.RolePurview
- err := readUserDb.Where("role_id = ?", roleID).First(&rolePurview).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return "", nil
- } else {
- return "", err
- }
- }
- return rolePurview.PurviewIds, nil
- }
-
- func SaveRolePurviewIds(orgID int64, appID int64, roleID int64, purviewIds string) error {
- var rolePurview models.RolePurview
- getRPErr := readUserDb.Where("org_id = ? AND app_id = ? AND role_id = ?", orgID, appID, roleID).First(&rolePurview).Error
- if getRPErr != nil {
- if getRPErr == gorm.ErrRecordNotFound {
- rolePurview = models.RolePurview{
- RoleId: roleID,
- OrgId: orgID,
- AppId: appID,
- Status: 1,
- CreateTime: time.Now().Unix(),
- }
- } else {
- return getRPErr
- }
- }
- rolePurview.PurviewIds = purviewIds
- rolePurview.ModifyTime = time.Now().Unix()
- tx := writeUserDb.Begin()
- if err := tx.Save(&rolePurview).Error; err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit().Error
- }
-
- func SaveFuncRolePurviewIds(orgID int64, appID int64, roleID int64, funcPurviewIds string) error {
- var rolePurview models.SgjUserRoleFuncPurview
- getRPErr := readUserDb.Where("org_id = ? AND app_id = ? AND role_id = ?", orgID, appID, roleID).First(&rolePurview).Error
- if getRPErr != nil {
- if getRPErr == gorm.ErrRecordNotFound {
- rolePurview = models.SgjUserRoleFuncPurview{
- RoleId: roleID,
- OrgId: orgID,
- AppId: appID,
- Status: 1,
- Ctime: time.Now().Unix(),
- }
- } else {
- return getRPErr
- }
- }
- rolePurview.PurviewIds = funcPurviewIds
- rolePurview.Mtime = time.Now().Unix()
- tx := writeUserDb.Begin()
- if err := tx.Save(&rolePurview).Error; err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit().Error
- }
-
- func ModifyAdminUserInfo(adminUserID int64, orgID int64, appID int64, name string, avatar string, newPassword string) error {
- tx := writeUserDb.Begin()
- editInfoErr := tx.Exec("update sgj_user_admin_role set user_name = ?, avatar = ?, mtime = ? where admin_user_id = ? and org_id = ?", name, avatar, time.Now().Unix(), adminUserID, orgID).Error
- if editInfoErr != nil {
- tx.Rollback()
- return editInfoErr
- }
- if len(newPassword) > 0 {
- editPwdErr := tx.Exec("update sgj_user_admin set password = ?, mtime = ? where id = ?", newPassword, time.Now().Unix(), adminUserID).Error
- if editPwdErr != nil {
- tx.Rollback()
- return editPwdErr
- }
- }
- tx.Commit()
- return nil
- }
-
- func GetOrgApp(orgID int64, app_type int) (*models.OrgApp, error) {
- var apps models.OrgApp
- err := readUserDb.Where("app_type = ? AND org_id = ? AND status = 1", app_type, orgID).First(&apps).Error
- if err != nil {
- return nil, err
- }
- return &apps, nil
- }
-
- func GetAllOrgValidRoles(orgID int64, isSubSuperAdmin bool) ([]*models.Role, error) {
- var roles []*models.Role
- db := readUserDb.Model(models.Org{})
- if isSubSuperAdmin {
- db = db.Where("role_name != '子管理员' AND is_system != 1")
- }
- err := db.Where("org_id = ? AND status = 1", orgID).
- Order("number desc,ctime").
- Find(&roles).
- Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return make([]*models.Role, 0), nil
- } else {
- return nil, err
- }
- }
- for _, item := range roles {
- var total int64
- readUserDb.Model(&models.App_Role{}).Where("org_id = ? AND find_in_set(?, role_ids)", orgID, item.Id).Count(&total)
- item.StaffNumber = total
- }
- return roles, nil
- }
-
- func CreateUserRole(userRole *models.App_Role) (err error) {
- err = writeUserDb.Create(&userRole).Error
- return
- }
-
- func CreateOrgRole(role *models.Role) (err error) {
- err = writeUserDb.Create(&role).Error
- return
- }
-
- func GetRolePurview(roleID int64) (models.RolePurview, error) {
- var rolePurviews models.RolePurview
- var err error
- err = readUserDb.Where("role_id = ?", roleID).First(&rolePurviews).Error
- return rolePurviews, err
- }
-
- func GetFuncRolePurview(roleID int64) (models.SgjUserRoleFuncPurview, error) {
- var rolePurviews models.SgjUserRoleFuncPurview
- var err error
- err = readUserDb.Where("role_id = ?", roleID).First(&rolePurviews).Error
- return rolePurviews, err
- }
-
- func SaveRolePurview(purview *models.RolePurview) (err error) {
- err = writeUserDb.Save(&purview).Error
- return
- }
-
- func CreateRolePurview(purview *models.RolePurview) (err error) {
- err = writeUserDb.Create(&purview).Error
- return
- }
-
- func CreateFuncRolePurview(purview *models.SgjUserRoleFuncPurview) (err error) {
- err = writeUserDb.Create(&purview).Error
- return
- }
-
- func GetAllPurview(module int64, pid int64) ([]*models.Purview, error) {
- var originPurviews []*models.Purview
- getPurviewErr := readUserDb.Model(models.Purview{}).Preload("Purview", "status = 1").Where("module = ? AND status = 1 AND parentid = ? AND super_admin_exclusive = 0", module, pid).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
- return originPurviews, getPurviewErr
- }
-
- type NewAdminUserModel struct {
- ID int64 `gorm:"id" json:"id"`
- AdminUserId int `gorm:"admin_user_id" json:"user_id"`
- UserName string `gorm:"user_name" json:"user_name"`
- UserTitle int `gorm:"user_title_name" json:"user_title_name"`
- Ip string `gorm:"ip" json:"ip"`
- Ctime int64 `gorm:"ctime" json:"last_login_time"`
- Status int `gorm:"status" json:"status"`
- Avatar string `gorm:"avatar" json:"avatar"`
- RoleIds string `gorm:"role_ids" json:"role_ids"`
- IsSubAdmin bool `gorm:"-" json:"is_sub_admin"`
- }
-
- func GetAllAdminUsersAndRole(orgID int64, appID int64, page int, count int) ([]*NewAdminUserModel, int, error) {
- var viewModels []*NewAdminUserModel = make([]*NewAdminUserModel, 0)
- var rows *sql.Rows
- var err error
- rows, err = readUserDb.Raw("SELECT u_a_r.id, u_a_r.admin_user_id, u_a_r.user_name, u_a_r.user_title, u_a_r.status,u_a_r.avatar,u_a_r.role_ids FROM sgj_user_admin_role AS u_a_r WHERE org_id = ? AND app_id = ? ORDER BY ctime asc", orgID, appID).Rows()
- defer rows.Close()
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return viewModels, 0, nil
- } else {
- return nil, 0, err
- }
- }
- for rows.Next() {
- var viewModel NewAdminUserModel
- readUserDb.ScanRows(rows, &viewModel)
- viewModels = append(viewModels, &viewModel)
- }
-
- for _, items := range viewModels {
- if len(items.RoleIds) > 0 {
- ids := strings.Split(items.RoleIds, ",")
- for _, ids := range ids {
- id, _ := strconv.ParseInt(ids, 10, 64)
- if id != 0 {
- role, _ := GetRoleByRoleID(id)
- if role != nil {
- if role.IsSystem == 1 && role.RoleName == "子管理员" {
- items.IsSubAdmin = true
- }
- }
- }
- }
- }
- }
-
- total := 0
- return viewModels, total, nil
- }
-
- func FindAdminUserByID(admin_user_id int64, org_id int64) (total int64, err error) {
- err = readUserDb.Model(&models.App_Role{}).Where("admin_user_id = ? AND org_id = ?", admin_user_id, org_id).Count(&total).Error
- return
- }
-
- func GetRoleAndPurviewById(role_id int64, org_id int64, app_id int64) (rolePurview models.RolePurview, err error) {
- err = readUserDb.Model(&models.RolePurview{}).Preload("Role", "status = 1").Where("role_id = ? AND status = 1 AND org_id = ? AND app_id = ?", role_id, org_id, app_id).First(&rolePurview).Error
- return
- }
-
- func SaveRole(role *models.Role) (err error) {
- err = writeUserDb.Save(&role).Error
- return
- }
-
- // 拥有xx角色的管理员的数量
- func RoleAdminUserCountTwo(orgID int64, appID int64, roleID int64) (int, error) {
- var count int
- err := readUserDb.Model(models.App_Role{}).
- Where("org_id = ? AND app_id = ? AND find_in_set(?, role_ids)", orgID, appID, roleID).
- Count(&count).
- Error
- if err != nil {
- return 0, err
- } else {
- return count, nil
- }
- }
-
- func FindAdminUserID(id int64) (role models.App_Role, err error) {
- err = readUserDb.Model(&models.App_Role{}).Where("id = ?", id).First(&role).Error
- return
- }
-
- func SaveAdminUser(role *models.App_Role) (err error) {
- err = writeUserDb.Save(&role).Error
- return
- }
-
- func GetFunctionPurview() (purview []*models.SgjUserOperatePurview, err error) {
- err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("status = 1 ").Order("number asc").Find(&purview).Error
- return
- }
-
- func GetRoleFuncPurviewIds(roleID int64) (string, error) {
- var rolePurview models.SgjUserRoleFuncPurview
- err := readUserDb.Where("role_id = ?", roleID).First(&rolePurview).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return "", nil
- } else {
- return "", err
- }
- }
- return rolePurview.PurviewIds, nil
- }
-
- func GetRoleFuncPurview(roleID int64) (rolePurviews models.SgjUserRoleFuncPurview, err error) {
- err = readUserDb.Where("role_id = ?", roleID).First(&rolePurviews).Error
- return
- }
-
- func SaveRoleFuncPurview(purview *models.SgjUserRoleFuncPurview) (err error) {
- err = writeUserDb.Save(purview).Error
- return
- }
-
- func GetUserAllRole(org_id int64, admin_user_id int64) (role models.App_Role, err error) {
- err = readUserDb.Model(&models.App_Role{}).Where("status = 1 AND org_id = ? AND admin_user_id = ?", org_id, admin_user_id).First(&role).Error
- return
- }
-
- func GetAllFunctionPurview() (purview []models.SgjUserOperatePurview, err error) {
- err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("status = 1 ").Order("number asc").Find(&purview).Error
- return
- }
-
- func FindErrorMsgByStr(str string) (string, error) {
- var purview models.SgjUserOperatePurview
- var err error
- err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("find_in_set(?, urlfor)", str).First(&purview).Error
- return purview.ErrorMsg, err
-
- }
-
- func GetNewAllOrgValidRoles(orgID int64) ([]*models.Role, error) {
- var roles []*models.Role
- db := readUserDb.Model(models.Org{})
- err := db.Where("org_id = ? AND status = 1", orgID).
- Order("number desc,ctime").
- Find(&roles).
- Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return make([]*models.Role, 0), nil
- } else {
- return nil, err
- }
- }
- for _, item := range roles {
- var total int64
- readUserDb.Model(&models.App_Role{}).Where("org_id = ? AND find_in_set(?, role_ids)", orgID, item.Id).Count(&total)
- item.StaffNumber = total
- }
- return roles, nil
- }
-
- func FindRoleRecordByRoleName(name string, org_id int64) (total int64) {
- readUserDb.Model(&models.Role{}).Where("status = 1 AND role_name = ? AND org_id = ?", name, org_id).Count(&total)
- return
- }
-
- func FindAllFuncPurview(ids []string) (purview []*models.SgjUserOperatePurview, err error) {
- err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("status = 1 AND id in (?)", ids).Order("number asc").Find(&purview).Error
- return
-
- }
-
- func GetSystemPurview() (purview []*models.Purview, err error) {
- err = readUserDb.Model(&models.Purview{}).Where("status = 1 AND module = 3 AND super_admin_exclusive = 1").Find(&purview).Error
- return
- }
|