role_service.go 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. package service
  2. import (
  3. "database/sql"
  4. "time"
  5. "XT_New/models"
  6. "XT_New/utils"
  7. "github.com/jinzhu/gorm"
  8. )
  9. func GetRoles(orgID int64, appID int64, page int, count int) ([]*models.Role, int, error) {
  10. var roles []*models.Role
  11. var totalCount int
  12. err := readUserDb.Model(&models.Role{}).
  13. Where("org_id = ? AND app_id = ?", orgID, appID).
  14. Count(&totalCount).
  15. Order("ctime asc").Limit(count).Offset((page - 1) * count).
  16. Find(&roles).
  17. Error
  18. if err != nil {
  19. if err == gorm.ErrRecordNotFound {
  20. return make([]*models.Role, 0), 0, nil
  21. } else {
  22. return nil, 0, err
  23. }
  24. }
  25. return roles, totalCount, nil
  26. }
  27. func GetAppRole(orgID int64, appID int64, adminUserID int64) (*models.App_Role, error) {
  28. var appRole models.App_Role
  29. 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
  30. if err != nil {
  31. if err == gorm.ErrRecordNotFound {
  32. return nil, nil
  33. } else {
  34. return nil, err
  35. }
  36. }
  37. return &appRole, nil
  38. }
  39. func CreateRole(adminUserID int64, orgID int64, appID int64, name string, intro string) (*models.Role, error) {
  40. role := models.Role{
  41. RoleName: name,
  42. RoleIntro: intro,
  43. Creator: adminUserID,
  44. OrgId: orgID,
  45. AppId: appID,
  46. IsSuperAdmin: false,
  47. Status: 1,
  48. CreateTime: time.Now().Unix(),
  49. ModifyTime: time.Now().Unix(),
  50. }
  51. tx := writeUserDb.Begin()
  52. if err := tx.Create(&role).Error; err != nil {
  53. tx.Rollback()
  54. return nil, err
  55. }
  56. tx.Commit()
  57. return &role, nil
  58. }
  59. func GetRoleByRoleID(roleID int64) (*models.Role, error) {
  60. var role models.Role
  61. err := readUserDb.Model(&models.Role{}).Where("id = ?", roleID).First(&role).Error
  62. if err != nil {
  63. if err == gorm.ErrRecordNotFound {
  64. return nil, nil
  65. }
  66. return nil, err
  67. } else {
  68. return &role, nil
  69. }
  70. }
  71. func ModifyRole(role *models.Role) error {
  72. tx := writeUserDb.Begin()
  73. if err := tx.Save(role).Error; err != nil {
  74. tx.Rollback()
  75. return err
  76. }
  77. return tx.Commit().Error
  78. }
  79. // 拥有xx角色的管理员的数量
  80. func RoleAdminUserCount(orgID int64, appID int64, roleID int64) (int, error) {
  81. var count int
  82. err := readUserDb.Model(models.App_Role{}).
  83. Where("org_id = ? AND app_id = ? AND role_id = ? AND status = 1", orgID, appID, roleID).
  84. Count(&count).
  85. Error
  86. if err != nil {
  87. return 0, err
  88. } else {
  89. return count, nil
  90. }
  91. }
  92. type AdminUserManageViewModel struct {
  93. AdminUserId int `gorm:"admin_user_id" json:"user_id"`
  94. UserName string `gorm:"user_name" json:"user_name"`
  95. RoleName string `gorm:"role_name" json:"role_name"`
  96. UserTitle int `gorm:"user_title" json:"user_title"`
  97. Ip string `gorm:"ip" json:"ip"`
  98. Ctime int64 `gorm:"ctime" json:"last_login_time"`
  99. Status int `gorm:"status" json:"status"`
  100. Avatar string `gorm:"avatar" json:"avatar"`
  101. // LastLoginTimeStr string `gorm:"-" json:"last_login_time_formatted"`
  102. TitleName string `gorm:"-" json:"title_name"`
  103. }
  104. func GetAdminUsersAndLoginInfo(orgID int64, appID int64, page int, count int) ([]*AdminUserManageViewModel, int, error) {
  105. if count <= 0 {
  106. return []*AdminUserManageViewModel{}, 0, nil
  107. }
  108. if page < 1 {
  109. page = 1
  110. }
  111. var viewModels []*AdminUserManageViewModel = make([]*AdminUserManageViewModel, 0)
  112. rows, err := readUserDb.Raw("SELECT u_a_r.admin_user_id, u_a_r.user_name, u_r.role_name, u_a_r.user_title, u_l.ip, u_l.ctime, u_a_r.status,u_a_r.avatar FROM sgj_user_admin_role AS u_a_r INNER JOIN sgj_user_role AS u_r ON u_a_r.org_id = u_r.org_id AND u_a_r.app_id = u_r.app_id AND u_r.id = u_a_r.role_id 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()
  113. defer rows.Close()
  114. if err != nil {
  115. if err == gorm.ErrRecordNotFound {
  116. return viewModels, 0, nil
  117. } else {
  118. return nil, 0, err
  119. }
  120. }
  121. for rows.Next() {
  122. var viewModel AdminUserManageViewModel
  123. readUserDb.ScanRows(rows, &viewModel)
  124. title, _ := models.UserTitle[viewModel.UserTitle]
  125. viewModel.TitleName = title
  126. // if viewModel.Ctime == 0 {
  127. // viewModel.LastLoginTimeStr = ""
  128. // } else {
  129. // loginTime := time.Unix(viewModel.Ctime, 0)
  130. // viewModel.LastLoginTimeStr = loginTime.Format("2006-01-02 15:04")
  131. // }
  132. viewModels = append(viewModels, &viewModel)
  133. }
  134. total := 0
  135. 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)
  136. return viewModels, total, nil
  137. }
  138. func GetValidRoleCount(orgID int64, appID int64, superAdminUserID int64) (int, error) {
  139. var count int
  140. err := readUserDb.Model(models.Role{}).
  141. Where("org_id = ? AND app_id = ? AND creator = ? AND is_super_admin = 0 AND status = 1", orgID, appID, superAdminUserID).
  142. Count(&count).
  143. Error
  144. if err != nil {
  145. return 0, err
  146. } else {
  147. return count, nil
  148. }
  149. }
  150. func GetAllValidRoles(orgID int64, appID int64) ([]*models.Role, error) {
  151. var roles []*models.Role
  152. err := readUserDb.Model(models.Role{}).
  153. Where("org_id = ? AND app_id = ? AND status = 1", orgID, appID).
  154. Order("ctime asc").
  155. Find(&roles).
  156. Error
  157. if err != nil {
  158. if err == gorm.ErrRecordNotFound {
  159. return make([]*models.Role, 0), nil
  160. } else {
  161. return nil, err
  162. }
  163. }
  164. return roles, nil
  165. }
  166. func IsRoleExist(orgID int64, appID int64, roleID int64) (bool, error) {
  167. var count int
  168. err := readUserDb.Model(models.Role{}).Where("org_id = ? AND app_id = ? AND id = ? AND status = 1", orgID, appID, roleID).Count(&count).Error
  169. if err != nil {
  170. return false, err
  171. } else {
  172. return count > 0, nil
  173. }
  174. }
  175. type AdminUserEditViewModel struct {
  176. AdminUserId int64 `gorm:"admin_user_id" json:"user_id"`
  177. UserName string `gorm:"user_name" json:"user_name"`
  178. Mobile string `gorm:"mobile" json:"mobile"`
  179. UserType int `gorm:"user_type" json:"user_type"`
  180. UserTitle int `gorm:"user_title" json:"user_title"`
  181. Intro string `gorm:"intro" json:"intro"`
  182. RoleId int64 `gorm:"role_id" json:"role_id"`
  183. }
  184. func GetGeneralAdminUser(orgID int64, appID int64, user_id int64) (*AdminUserEditViewModel, error) {
  185. 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()
  186. defer rows.Close()
  187. if err != nil {
  188. if err == gorm.ErrRecordNotFound {
  189. return nil, nil
  190. } else {
  191. return nil, err
  192. }
  193. }
  194. if rows.Next() {
  195. var viewModel AdminUserEditViewModel
  196. err := readUserDb.ScanRows(rows, &viewModel)
  197. if err != nil {
  198. return nil, err
  199. } else {
  200. return &viewModel, nil
  201. }
  202. }
  203. return nil, nil
  204. }
  205. func SaveAppRole(appRole *models.App_Role) error {
  206. tx := writeUserDb.Begin()
  207. if err := tx.Model(&models.App_Role{}).Save(appRole).Error; err != nil {
  208. tx.Rollback()
  209. return err
  210. }
  211. return tx.Commit().Error
  212. }
  213. func IsMobileDidUsedAtApp(orgID int64, appID int64, mobile string) (bool, error) {
  214. var count int
  215. 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()
  216. defer rows.Close()
  217. if err != nil {
  218. if err == gorm.ErrRecordNotFound {
  219. return false, nil
  220. } else {
  221. return true, err
  222. }
  223. }
  224. if rows.Next() {
  225. rows.Scan(&count)
  226. return count > 0, nil
  227. }
  228. return true, nil
  229. }
  230. func IsUserSuperAdminWithMobile(mobile string) (bool, error) {
  231. var user models.AdminUser
  232. err := readUserDb.Where("mobile = ?", mobile).First(&user).Error
  233. if err != nil {
  234. if err == gorm.ErrRecordNotFound {
  235. return false, nil
  236. } else {
  237. return false, err
  238. }
  239. }
  240. return user.IsSuperAdmin, nil
  241. }
  242. func CreateGeneralAdminUser(orgID int64, appID int64, mobile string, name string, userTitle string, roleIds string) (*models.AdminUser, string, error) {
  243. now := time.Now().Unix()
  244. tx := writeUserDb.Begin()
  245. var adminUser models.AdminUser
  246. err := readUserDb.Where("mobile = ? AND status = 1", mobile).First(&adminUser).Error
  247. password := ""
  248. if err != nil {
  249. if err != gorm.ErrRecordNotFound {
  250. return nil, "", err
  251. } else {
  252. password = utils.RandomNumberString(6)
  253. adminUser.Mobile = mobile
  254. adminUser.Password = utils.String2md5(password)
  255. adminUser.IsSuperAdmin = false
  256. adminUser.Status = 1
  257. adminUser.CreateTime = now
  258. adminUser.ModifyTime = now
  259. if createErr := tx.Create(&adminUser).Error; createErr != nil {
  260. tx.Rollback()
  261. return nil, "", createErr
  262. }
  263. }
  264. }
  265. app_role := models.App_Role{
  266. AdminUserId: adminUser.Id,
  267. OrgId: orgID,
  268. AppId: appID,
  269. Avatar: "",
  270. UserName: name,
  271. UserTitleName: userTitle,
  272. Status: 1,
  273. CreateTime: now,
  274. ModifyTime: now,
  275. RoleIds: roleIds,
  276. }
  277. if createApp_RoleErr := tx.Create(&app_role).Error; createApp_RoleErr != nil {
  278. tx.Rollback()
  279. return nil, "", createApp_RoleErr
  280. }
  281. tx.Commit()
  282. return &adminUser, password, nil
  283. }
  284. type PurviewTreeViewModel struct {
  285. ID int64 `json:"id"`
  286. PID int64 `json:"pid"`
  287. Name string `json:"name"`
  288. Childs []*PurviewTreeViewModel `json:"childs"`
  289. }
  290. func GetAllGeneralPurviewVMsProcessed() ([]*PurviewTreeViewModel, error) {
  291. var originPurviews []*models.Purview
  292. getPurviewErr := readUserDb.Model(models.Purview{}).Where("module = 3 AND status = 1 AND super_admin_exclusive = 0").Order("listorder asc").Order("id asc").Find(&originPurviews).Error
  293. if getPurviewErr != nil {
  294. return nil, getPurviewErr
  295. }
  296. // 加工这些规则:树形化
  297. purviewVMs := make([]*PurviewTreeViewModel, 0)
  298. pid_childs := make(map[int64][]*PurviewTreeViewModel)
  299. for _, purview := range originPurviews {
  300. // warning:下面这个算法只适用最多两层树形结构的菜单,对于两层以上的会丢失掉第三层及其以下的节点
  301. // 因为取出 originPurviews 的时候已经排过序了,所以顶级节点肯定最先处理,不需要担心子节点比父节点先处理
  302. pvm := &PurviewTreeViewModel{
  303. ID: purview.Id,
  304. PID: purview.Parentid,
  305. Name: purview.Name,
  306. }
  307. if purview.Parentid == 0 {
  308. purviewVMs = append(purviewVMs, pvm)
  309. } else {
  310. childs := pid_childs[purview.Parentid]
  311. if childs == nil {
  312. childs = make([]*PurviewTreeViewModel, 0)
  313. }
  314. childs = append(childs, pvm)
  315. pid_childs[purview.Parentid] = childs
  316. }
  317. }
  318. for _, vm := range purviewVMs {
  319. vm.Childs = pid_childs[vm.ID]
  320. }
  321. return purviewVMs, nil
  322. }
  323. func GetRolePurviewIds(roleID int64) (string, error) {
  324. var rolePurview models.RolePurview
  325. err := readUserDb.Where("role_id = ?", roleID).First(&rolePurview).Error
  326. if err != nil {
  327. if err == gorm.ErrRecordNotFound {
  328. return "", nil
  329. } else {
  330. return "", err
  331. }
  332. }
  333. return rolePurview.PurviewIds, nil
  334. }
  335. func SaveRolePurviewIds(orgID int64, appID int64, roleID int64, purviewIds string) error {
  336. var rolePurview models.RolePurview
  337. getRPErr := readUserDb.Where("org_id = ? AND app_id = ? AND role_id = ?", orgID, appID, roleID).First(&rolePurview).Error
  338. if getRPErr != nil {
  339. if getRPErr == gorm.ErrRecordNotFound {
  340. rolePurview = models.RolePurview{
  341. RoleId: roleID,
  342. OrgId: orgID,
  343. AppId: appID,
  344. Status: 1,
  345. CreateTime: time.Now().Unix(),
  346. }
  347. } else {
  348. return getRPErr
  349. }
  350. }
  351. rolePurview.PurviewIds = purviewIds
  352. rolePurview.ModifyTime = time.Now().Unix()
  353. tx := writeUserDb.Begin()
  354. if err := tx.Save(&rolePurview).Error; err != nil {
  355. tx.Rollback()
  356. return err
  357. }
  358. return tx.Commit().Error
  359. }
  360. func ModifyAdminUserInfo(adminUserID int64, orgID int64, appID int64, name string, avatar string, newPassword string) error {
  361. tx := writeUserDb.Begin()
  362. 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
  363. if editInfoErr != nil {
  364. tx.Rollback()
  365. return editInfoErr
  366. }
  367. if len(newPassword) > 0 {
  368. editPwdErr := tx.Exec("update sgj_user_admin set password = ?, mtime = ? where id = ?", newPassword, time.Now().Unix(), adminUserID).Error
  369. if editPwdErr != nil {
  370. tx.Rollback()
  371. return editPwdErr
  372. }
  373. }
  374. tx.Commit()
  375. return nil
  376. }
  377. func GetOrgApp(orgID int64, app_type int) (*models.OrgApp, error) {
  378. var apps models.OrgApp
  379. err := readUserDb.Where("app_type = ? AND org_id = ? AND status = 1", app_type, orgID).First(&apps).Error
  380. if err != nil {
  381. return nil, err
  382. }
  383. return &apps, nil
  384. }
  385. func GetAllOrgValidRoles(orgID int64) ([]*models.Role, error) {
  386. var roles []*models.Role
  387. err := readUserDb.Model(models.Role{}).
  388. Where("org_id = ? AND status = 1", orgID).
  389. Order("number desc,ctime").
  390. Find(&roles).
  391. Error
  392. if err != nil {
  393. if err == gorm.ErrRecordNotFound {
  394. return make([]*models.Role, 0), nil
  395. } else {
  396. return nil, err
  397. }
  398. }
  399. for _, item := range roles {
  400. var total int64
  401. readUserDb.Model(&models.App_Role{}).Where("org_id = ? AND find_in_set(?, role_ids)", orgID, item.Id).Count(&total)
  402. item.StaffNumber = total
  403. }
  404. return roles, nil
  405. }
  406. func CreateUserRole(userRole *models.App_Role) (err error) {
  407. err = writeUserDb.Create(&userRole).Error
  408. return
  409. }
  410. func CreateOrgRole(role *models.Role) (err error) {
  411. err = writeUserDb.Create(&role).Error
  412. return
  413. }
  414. func GetRolePurview(roleID int64) (models.RolePurview, error) {
  415. var rolePurviews models.RolePurview
  416. var err error
  417. err = readUserDb.Where("role_id = ?", roleID).First(&rolePurviews).Error
  418. return rolePurviews, err
  419. }
  420. func GetFuncRolePurview(roleID int64) (models.SgjUserRoleFuncPurview, error) {
  421. var rolePurviews models.SgjUserRoleFuncPurview
  422. var err error
  423. err = readUserDb.Where("role_id = ?", roleID).First(&rolePurviews).Error
  424. return rolePurviews, err
  425. }
  426. func SaveRolePurview(purview *models.RolePurview) (err error) {
  427. err = writeUserDb.Save(&purview).Error
  428. return
  429. }
  430. func CreateRolePurview(purview *models.RolePurview) (err error) {
  431. err = writeUserDb.Create(&purview).Error
  432. return
  433. }
  434. func CreateFuncRolePurview(purview *models.SgjUserRoleFuncPurview) (err error) {
  435. err = writeUserDb.Create(&purview).Error
  436. return
  437. }
  438. func GetAllPurview(module int64, pid int64) ([]*models.Purview, error) {
  439. var originPurviews []*models.Purview
  440. 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
  441. return originPurviews, getPurviewErr
  442. }
  443. type NewAdminUserModel struct {
  444. ID int64 `gorm:"id" json:"id"`
  445. AdminUserId int `gorm:"admin_user_id" json:"user_id"`
  446. UserName string `gorm:"user_name" json:"user_name"`
  447. UserTitle int `gorm:"user_title_name" json:"user_title_name"`
  448. Ip string `gorm:"ip" json:"ip"`
  449. Ctime int64 `gorm:"ctime" json:"last_login_time"`
  450. Status int `gorm:"status" json:"status"`
  451. Avatar string `gorm:"avatar" json:"avatar"`
  452. RoleIds string `gorm:"role_ids" json:"role_ids"`
  453. }
  454. func GetAllAdminUsersAndRole(orgID int64, appID int64, page int, count int) ([]*NewAdminUserModel, int, error) {
  455. var viewModels []*NewAdminUserModel = make([]*NewAdminUserModel, 0)
  456. var rows *sql.Rows
  457. var err error
  458. 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 = ? AND user_type <> 1 ORDER BY ctime DESC", orgID, appID).Rows()
  459. defer rows.Close()
  460. if err != nil {
  461. if err == gorm.ErrRecordNotFound {
  462. return viewModels, 0, nil
  463. } else {
  464. return nil, 0, err
  465. }
  466. }
  467. for rows.Next() {
  468. var viewModel NewAdminUserModel
  469. readUserDb.ScanRows(rows, &viewModel)
  470. viewModels = append(viewModels, &viewModel)
  471. }
  472. total := 0
  473. return viewModels, total, nil
  474. }
  475. func FindAdminUserByID(admin_user_id int64, org_id int64) (total int64, err error) {
  476. err = readUserDb.Model(&models.App_Role{}).Where("admin_user_id = ? AND org_id = ?", admin_user_id, org_id).Count(&total).Error
  477. return
  478. }
  479. func GetRoleAndPurviewById(role_id int64, org_id int64, app_id int64) (rolePurview models.RolePurview, err error) {
  480. 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
  481. return
  482. }
  483. func SaveRole(role *models.Role) (err error) {
  484. err = writeUserDb.Save(&role).Error
  485. return
  486. }
  487. // 拥有xx角色的管理员的数量
  488. func RoleAdminUserCountTwo(orgID int64, appID int64, roleID int64) (int, error) {
  489. var count int
  490. err := readUserDb.Model(models.App_Role{}).
  491. Where("org_id = ? AND app_id = ? AND status = 1 AND find_in_set(?, role_ids)", orgID, appID, roleID).
  492. Count(&count).
  493. Error
  494. if err != nil {
  495. return 0, err
  496. } else {
  497. return count, nil
  498. }
  499. }
  500. func FindAdminUserID(id int64) (role models.App_Role, err error) {
  501. err = readUserDb.Model(&models.App_Role{}).Where("id = ?", id).First(&role).Error
  502. return
  503. }
  504. func SaveAdminUser(role *models.App_Role) (err error) {
  505. err = writeUserDb.Save(&role).Error
  506. return
  507. }
  508. func GetFunctionPurview() (purview []*models.SgjUserOperatePurview, err error) {
  509. err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("status = 1 ").Find(&purview).Error
  510. return
  511. }
  512. func GetRoleFuncPurviewIds(roleID int64) (string, error) {
  513. var rolePurview models.SgjUserRoleFuncPurview
  514. err := readUserDb.Where("role_id = ?", roleID).First(&rolePurview).Error
  515. if err != nil {
  516. if err == gorm.ErrRecordNotFound {
  517. return "", nil
  518. } else {
  519. return "", err
  520. }
  521. }
  522. return rolePurview.PurviewIds, nil
  523. }
  524. func GetRoleFuncPurview(roleID int64) (rolePurviews models.SgjUserRoleFuncPurview, err error) {
  525. err = readUserDb.Where("role_id = ?", roleID).First(&rolePurviews).Error
  526. return
  527. }
  528. func SaveRoleFuncPurview(purview *models.SgjUserRoleFuncPurview) (err error) {
  529. err = writeUserDb.Save(purview).Error
  530. return
  531. }
  532. func GetUserAllRole(org_id int64, admin_user_id int64) (role models.App_Role, err error) {
  533. err = readUserDb.Model(&models.App_Role{}).Where("status = 1 AND org_id = ? AND admin_user_id = ?", org_id, admin_user_id).First(&role).Error
  534. return
  535. }
  536. func GetAllFunctionPurview() (purview []models.SgjUserOperatePurview, err error) {
  537. err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("status = 1 ").Find(&purview).Error
  538. return
  539. }
  540. func FindErrorMsgByStr(str string) (string, error) {
  541. var purview models.SgjUserOperatePurview
  542. var err error
  543. err = readUserDb.Model(&models.SgjUserOperatePurview{}).Where("find_in_set(?, urlfor)", str).First(&purview).Error
  544. return purview.ErrorMsg, err
  545. }