| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460 |
- import md5 from 'md5'
- import store from '@/store'
- import {
- Role,
- AlarmLevelInfo
- } from '@/constant'
- import request, {
- keycloakRequest,
- tenantRequest
- } from '@/utils/request'
- import {
- send,
- add,
- update,
- messageSend,
- addTenant as addTenantKey
- } from './base'
- export function getWechatQr (id) {
- return request({
- url: `keycloak/query/ticket/${id}`,
- method: 'GET'
- })
- }
- export function getAppletQr (data) {
- return request({
- url: 'wxapplet/qrcode',
- method: 'GET',
- params: data
- })
- }
- export function userinfo (silence) {
- const config = {
- url: `/users/${store.getters.userId}`,
- method: 'GET'
- }
- if (silence) {
- config.custom = true
- return keycloakRequest(config)
- }
- return send(config, keycloakRequest)
- }
- export function addUser (data) {
- return add({
- url: '/admin/users',
- method: 'POST',
- data: addTenantKey({
- ...data,
- credentials: [{ type: 'password', value: process.env.VUE_APP_USER_PASSWORD, temporary: true }]
- })
- })
- }
- export function updateUser (data, message) {
- return update({
- url: '/keycloak/users/attribute',
- method: 'PUT',
- data
- }, message)
- }
- export function toggleUser ({ userId, userName }, enabled) {
- return messageSend({
- url: '/admin/users/enabled',
- method: 'PUT',
- data: addTenantKey({
- userId,
- userName,
- enabled
- })
- }, enabled ? '启用' : '停用')
- }
- export function deleteUser (userId) {
- return messageSend({
- url: `/admin/users/${userId}`,
- method: 'DELETE'
- }, '注销')
- }
- export function getUserCredentials (userId) {
- return request({
- url: `/admin/users/${userId}/credentials`,
- method: 'GET'
- }).then(({ data }) => data)
- }
- export function deleteUserCredentials (userId, credentialId) {
- return messageSend({
- url: `/admin/users/${userId}/credentials/${credentialId}`,
- method: 'DELETE'
- }, '重置')
- }
- export function resetPassword (userId) {
- return messageSend({
- url: `/admin/users/${userId}/resetPassword`,
- method: 'PUT',
- data: {
- type: 'password',
- value: process.env.VUE_APP_USER_PASSWORD,
- temporary: true
- }
- }, '重置')
- }
- export function resetPasswordByUser (newPassword) {
- return messageSend({
- url: '/keycloak/changePassword',
- method: 'PUT',
- params: { newPassword: md5(`${newPassword}${process.env.VUE_APP_SALT}`) }
- }, '重置')
- }
- export function getTenantsByQuery (query, recursive) {
- const { pageSize: max, pageNum, name, ...params } = query
- return keycloakRequest({
- url: '/groups',
- method: 'GET',
- params: {
- briefRepresentation: false,
- max,
- first: pageNum ? (pageNum - 1) * max : void 0,
- search: name || void 0,
- ...params
- }
- }).then(data => {
- return { data: normalizeGroups(data, recursive) }
- })
- }
- function normalizeGroups (groups, recursive, parentGroup) {
- return groups.map(({ id, name, path, attributes, subGroups }) => {
- const remark = attributes.remark?.[0] || ''
- const group = {
- parentGroup,
- id,
- path,
- name,
- remark,
- label: remark || name
- }
- if (!recursive) {
- return group
- }
- group.subGroups = normalizeGroups(subGroups.sort((a, b) => a.name <= b.name ? -1 : 1), recursive, group)
- return group
- })
- }
- export function getTenantCount (name) {
- return keycloakRequest({
- url: '/groups/count',
- method: 'GET',
- params: {
- top: true,
- search: name || void 0
- }
- })
- }
- export async function getTenants (query) {
- const { count } = await getTenantCount(query.name)
- const { data } = await getTenantsByQuery(query, false)
- return {
- data,
- totalCount: count
- }
- }
- export async function getPlatformTenants () {
- const { count } = await getTenantCount()
- return getTenantsByQuery({ max: count }, false)
- }
- export function addTenant ({ name, remark }) {
- return add({
- url: '/super/admin/tenant',
- method: 'POST',
- data: {
- name,
- attributes: {
- remark: [remark]
- }
- }
- })
- }
- export function deleteTenant ({ id }) {
- return messageSend({
- url: `/super/admin/tenant/${id}`,
- method: 'DELETE'
- }, '删除')
- }
- export function updateTenant ({ id, name, remark }) {
- return update({
- url: `/admin/group/${id}`,
- method: 'PUT',
- data: {
- name,
- attributes: {
- remark: [remark]
- }
- }
- })
- }
- export function getUsersByGroup (query) {
- const { id, pageSize: max, pageNum, ...params } = query
- return keycloakRequest({
- url: `/groups/${id}/members`,
- method: 'GET',
- params: {
- briefRepresentation: true,
- max: max + 1,
- first: pageNum ? (pageNum - 1) * max : void 0,
- ...params
- }
- }).then(data => {
- const totalCount = data.length
- if (totalCount > max) {
- data = data.slice(0, -1)
- }
- return {
- data,
- totalCount
- }
- })
- }
- export function getUserRoleMapping (userId) {
- return keycloakRequest({
- url: `/users/${userId}/role-mappings/realm`,
- method: 'GET'
- }).then(
- roles => getRoles().then(
- available => {
- return {
- available,
- roles
- }
- }
- )
- )
- }
- let roles = null
- function getRoles () {
- if (roles) {
- return Promise.resolve(roles)
- }
- return keycloakRequest({
- url: `/roles`,
- method: 'GET'
- }).then(data => {
- const isSuperAdmin = store.getters.isSuperAdmin
- return (roles = data.filter(({ name }) => name !== Role.SUPER_ADMIN && (isSuperAdmin || name !== Role.ADMIN) && name.startsWith('ROLE_')))
- })
- }
- export function updateUserRoles (userId, available, fromKeys, toKeys) {
- const delRoles = []
- const toSet = new Set(toKeys)
- fromKeys.forEach(id => {
- if (!toSet.has(id)) {
- delRoles.push(available.find(role => role.id === id))
- }
- })
- const addRoles = []
- const fromSet = new Set(fromKeys)
- toKeys.forEach(id => {
- if (!fromSet.has(id)) {
- addRoles.push(available.find(role => role.id === id))
- }
- })
- return request({
- url: '/admin/users/role/configure',
- method: 'PUT',
- data: {
- userId,
- addRoleList: addRoles,
- removeRoleList: delRoles
- }
- })
- }
- export function sendVerificationCode (data) {
- return request({
- url: '/authcode/send',
- method: 'POST',
- data
- })
- }
- export function checkVerificationCode (data) {
- return request({
- url: '/authcode/check',
- method: 'POST',
- data
- })
- }
- export function getDepartments () {
- return tenantRequest({
- url: '/admin/department/list',
- method: 'POST',
- data: addTenantKey()
- })
- }
- export function getDepartmentTree () {
- if (store.getters.isTenantAdmin) {
- return getDepartments().then(({ data }) => {
- return {
- data: [{
- path: store.getters.tenant,
- name: '我的部门',
- children: data
- }]
- }
- })
- }
- return request({
- url: '/keycloak/oneself/tree',
- method: 'GET'
- }).then(({ data }) => {
- return {
- data: data
- ? [data]
- : [{
- path: store.getters.org,
- name: '我的部门',
- children: []
- }]
- }
- })
- }
- export function addDepartment (data) {
- return add({
- url: '/admin/department',
- method: 'POST',
- data: addTenantKey(data)
- }, tenantRequest)
- }
- export function updateDepartmentName (data) {
- return update({
- url: '/admin/department',
- method: 'PUT',
- data
- })
- }
- export function deleteDepartment ({ id }) {
- return messageSend({
- url: `/admin/department/${id}`,
- method: 'DELETE'
- }, '删除')
- }
- export function getUsersByDepartment (query) {
- const { pageNum: pageIndex, pageSize, ...params } = query
- return tenantRequest({
- url: '/admin/department/user/list',
- method: 'POST',
- data: addTenantKey({
- pageIndex, pageSize,
- ...params
- })
- })
- }
- export function updateUserDepartment (userId, { id, name }) {
- return tenantRequest({
- url: '/admin/users/regrouping',
- method: 'PUT',
- data: addTenantKey({
- userId,
- ...(id ? { departmentId: id, departmentName: name } : { departmentName: '顶层部门' })
- })
- })
- }
- export function updateUserName (userId, name) {
- return update({
- url: '/admin/users/update',
- method: 'PUT',
- data: addTenantKey({
- userId,
- name
- })
- }, null, tenantRequest)
- }
- export function updateUserInformLevel ({ userId, userName }, informLevel) {
- let informName = '未知'
- switch (true) {
- case informLevel >= 1000:
- informName = `所有${AlarmLevelInfo[informLevel - 1000]}`
- break
- case informLevel >= 0:
- informName = `部门${AlarmLevelInfo[informLevel - 1000]}`
- break
- case informLevel === -1:
- informName = '不预警'
- break
- default:
- break
- }
- return update({
- url: '/admin/users/update/deviceExceptionLevel',
- method: 'PUT',
- data: addTenantKey({
- userId,
- userName,
- informLevel,
- informName
- })
- }, null, tenantRequest)
- }
- export function migrateUser (data) {
- return tenantRequest({
- url: '/admin/users/temporary/migration',
- method: 'POST',
- data: addTenantKey(data)
- })
- }
- export function getTenantTree () {
- return getGroups().then(data => {
- const groups = normalizeGroups([data], true)
- groups[0].label = '根部门'
- return { data: groups }
- })
- }
- async function getGroups () {
- if (!store.getters.tenantId) {
- const groups = await getUserGroups(store.getters.userId)
- store.commit('user/SET_TENANT_ID', groups[0].id)
- }
- return keycloakRequest({
- url: `/groups/${store.getters.tenantId}`,
- method: 'GET'
- })
- }
- export function getUserGroups (id) {
- return keycloakRequest({
- url: `/users/${id}/groups`,
- method: 'GET',
- params: { briefRepresentation: true }
- }).then(data => data.sort((a, b) => a.path.length - b.path.length))
- }
|