feat:2.5.0

1. 完成组配置页面
2. 完成不同空间的切换
3. 新增登录用户工具类
This commit is contained in:
byteblogs168 2023-11-22 23:47:33 +08:00
parent db1aab3bbd
commit 9603dd30c7
23 changed files with 225 additions and 88 deletions

View File

@ -259,6 +259,7 @@ CREATE TABLE `system_user_permission`
CREATE TABLE `sequence_alloc`
(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL DEFAULT '' COMMENT '组名称',
`max_id` bigint(20) NOT NULL DEFAULT '1' COMMENT '最大id',
`step` int(11) NOT NULL DEFAULT '100' COMMENT '步长',

View File

@ -35,6 +35,8 @@ public class SequenceAlloc implements Serializable {
*/
private String groupName;
private String namespaceId;
/**
* 最大id
*/

View File

@ -2,9 +2,11 @@ package com.aizuda.easy.retry.server.web.controller;
import cn.hutool.core.util.ReUtil;
import com.aizuda.easy.retry.server.common.config.SystemProperties;
import com.aizuda.easy.retry.server.web.annotation.LoginUser;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.GroupConfigQueryVO;
import com.aizuda.easy.retry.server.web.model.request.GroupConfigRequestVO;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.GroupConfigResponseVO;
import com.aizuda.easy.retry.server.web.annotation.LoginRequired;
import com.aizuda.easy.retry.server.web.annotation.RoleEnum;
@ -37,8 +39,8 @@ public class GroupConfigController {
@LoginRequired(role = RoleEnum.ADMIN)
@PostMapping("")
public Boolean addGroup(@RequestBody @Validated GroupConfigRequestVO groupConfigRequestVO) {
return groupConfigService.addGroup(groupConfigRequestVO);
public Boolean addGroup(@LoginUser UserSessionVO systemUser, @RequestBody @Validated GroupConfigRequestVO groupConfigRequestVO) {
return groupConfigService.addGroup(systemUser, groupConfigRequestVO);
}
@LoginRequired
@ -68,9 +70,15 @@ public class GroupConfigController {
}
@LoginRequired
@PostMapping("/all/group-name/list")
@PostMapping("/all/group-config/list")
public List<GroupConfigResponseVO> getAllGroupNameList(@RequestBody List<String> namespaceIds) {
return groupConfigService.getAllGroupNameList(namespaceIds);
return groupConfigService.getAllGroupConfigList(namespaceIds);
}
@LoginRequired
@PostMapping("/all/group-name/list")
public List<String> getAllGroupNameList() {
return groupConfigService.getAllGroupNameList();
}
@Deprecated

View File

@ -1,7 +1,7 @@
package com.aizuda.easy.retry.server.web.controller;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.service.SystemUserService;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.SystemUserQueryVO;
import com.aizuda.easy.retry.server.web.model.request.SystemUserRequestVO;
@ -34,7 +34,7 @@ public class SystemUserController {
@LoginRequired
@GetMapping("/user/info")
public SystemUserResponseVO getUserInfo(@LoginUser SystemUser systemUser) {
public SystemUserResponseVO getUserInfo(@LoginUser UserSessionVO systemUser) {
return systemUserService.getUserInfo(systemUser);
}

View File

@ -1,6 +1,7 @@
package com.aizuda.easy.retry.server.web.interceptor;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.SystemUserMapper;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser;
import com.auth0.jwt.JWT;
@ -33,6 +34,7 @@ import java.util.Objects;
public class AuthenticationInterceptor implements HandlerInterceptor {
public static final String AUTHENTICATION = "EASY-RETRY-AUTH";
public static final String NAMESPACE_ID = "EASY-RETRY-NAMESPACE-ID";
@Autowired
private SystemUserMapper systemUserMapper;
@ -41,6 +43,7 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object object) throws Exception {
// http 请求头中取出 token
String token = httpServletRequest.getHeader(AUTHENTICATION);
String namespaceId = httpServletRequest.getHeader(NAMESPACE_ID);
// 如果不是映射到方法直接通过
if (!(object instanceof HandlerMethod)) {
@ -74,7 +77,13 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
throw new EasyRetryServerException("{} 用户不存在", systemUser.getUsername());
}
httpServletRequest.setAttribute("currentUser", systemUser);
UserSessionVO userSessionVO = new UserSessionVO();
userSessionVO.setId(systemUser.getId());
userSessionVO.setUsername(systemUser.getUsername());
userSessionVO.setRole(systemUser.getRole());
userSessionVO.setNamespaceId(namespaceId);
httpServletRequest.setAttribute("currentUser", userSessionVO);
// 验证 token
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(systemUser.getPassword())).build();

View File

@ -1,5 +1,6 @@
package com.aizuda.easy.retry.server.web.interceptor;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser;
import com.aizuda.easy.retry.server.web.annotation.LoginUser;
import org.springframework.core.MethodParameter;
@ -21,13 +22,13 @@ public class LoginUserMethodArgumentResolver implements HandlerMethodArgumentRes
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().isAssignableFrom(SystemUser.class)
return parameter.getParameterType().isAssignableFrom(UserSessionVO.class)
&& parameter.hasParameterAnnotation(LoginUser.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest,
WebDataBinderFactory binderFactory) throws Exception {
SystemUser userInfo = (SystemUser) webRequest.getAttribute("currentUser", RequestAttributes.SCOPE_REQUEST);
UserSessionVO userInfo = (UserSessionVO) webRequest.getAttribute("currentUser", RequestAttributes.SCOPE_REQUEST);
if (userInfo != null) {
return userInfo;
}

View File

@ -22,9 +22,4 @@ public class GroupConfigQueryVO extends BaseQueryVO {
@NotNull(message = "组状态不能为空")
private Integer groupStatus;
/**
* 命名空间id
*/
private Long namespaceId;
}

View File

@ -17,12 +17,6 @@ import javax.validation.constraints.Pattern;
@Data
public class GroupConfigRequestVO {
/**
* 命名空间id
*/
@NotNull(message = "命名空间id 不能为空")
private Long namespaceId;
@NotBlank(message = "组名称不能为空")
@Pattern(regexp = "^[A-Za-z0-9_]{1,64}$", message = "仅支持长度为1~64字符且类型为数字、字母和下划线")
private String groupName;

View File

@ -0,0 +1,21 @@
package com.aizuda.easy.retry.server.web.model.request;
import lombok.Data;
/**
* @author xiaowoniu
* @date 2023-11-22 22:42:26
* @since 2.5.0
*/
@Data
public final class UserSessionVO {
private Long id;
private String username;
private Integer role;
private String namespaceId;
}

View File

@ -3,6 +3,7 @@ package com.aizuda.easy.retry.server.web.service;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.GroupConfigQueryVO;
import com.aizuda.easy.retry.server.web.model.request.GroupConfigRequestVO;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.GroupConfigResponseVO;
import java.util.List;
@ -13,7 +14,7 @@ import java.util.List;
*/
public interface GroupConfigService {
Boolean addGroup(GroupConfigRequestVO groupConfigRequestVO);
Boolean addGroup(UserSessionVO systemUser, GroupConfigRequestVO groupConfigRequestVO);
Boolean updateGroup(GroupConfigRequestVO groupConfigRequestVO);
@ -23,5 +24,8 @@ public interface GroupConfigService {
GroupConfigResponseVO getGroupConfigByGroupName(String groupName);
List<GroupConfigResponseVO> getAllGroupNameList(final List<String> namespaceId);
List<GroupConfigResponseVO> getAllGroupConfigList(final List<String> namespaceId);
List<String> getAllGroupNameList();
}

View File

@ -1,6 +1,6 @@
package com.aizuda.easy.retry.server.web.service;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.SystemUserQueryVO;
import com.aizuda.easy.retry.server.web.model.request.SystemUserRequestVO;
@ -20,7 +20,7 @@ public interface SystemUserService {
SystemUserResponseVO login(SystemUserRequestVO requestVO);
SystemUserResponseVO getUserInfo(SystemUser systemUser);
SystemUserResponseVO getUserInfo(UserSessionVO systemUser);
void addUser(SystemUserRequestVO requestVO);

View File

@ -1,5 +1,6 @@
package com.aizuda.easy.retry.server.web.service.convert;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.template.datasource.persistence.po.SystemUser;
import com.aizuda.easy.retry.server.web.model.response.SystemUserResponseVO;
import org.mapstruct.Mapper;
@ -17,6 +18,8 @@ public interface SystemUserResponseVOConverter {
SystemUserResponseVOConverter INSTANCE = Mappers.getMapper(SystemUserResponseVOConverter.class);
SystemUserResponseVO convert(UserSessionVO systemUser);
SystemUserResponseVO convert(SystemUser systemUser);
List<SystemUserResponseVO> batchConvert(List<SystemUser> systemUsers);

View File

@ -11,10 +11,12 @@ import com.aizuda.easy.retry.server.retry.task.support.handler.ConfigVersionSync
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.GroupConfigQueryVO;
import com.aizuda.easy.retry.server.web.model.request.GroupConfigRequestVO;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.GroupConfigResponseVO;
import com.aizuda.easy.retry.server.web.service.GroupConfigService;
import com.aizuda.easy.retry.server.web.service.convert.GroupConfigConverter;
import com.aizuda.easy.retry.server.web.service.convert.GroupConfigResponseVOConverter;
import com.aizuda.easy.retry.server.web.util.UserSessionUtils;
import com.aizuda.easy.retry.template.datasource.access.AccessTemplate;
import com.aizuda.easy.retry.template.datasource.access.ConfigAccess;
import com.aizuda.easy.retry.template.datasource.access.TaskAccess;
@ -62,7 +64,7 @@ public class GroupConfigServiceImpl implements GroupConfigService {
@Override
@Transactional
public Boolean addGroup(GroupConfigRequestVO groupConfigRequestVO) {
public Boolean addGroup(UserSessionVO systemUser, GroupConfigRequestVO groupConfigRequestVO) {
ConfigAccess<GroupConfig> groupConfigAccess = accessTemplate.getGroupConfigAccess();
Assert.isTrue(groupConfigAccess.count(new LambdaQueryWrapper<GroupConfig>()
@ -70,10 +72,10 @@ public class GroupConfigServiceImpl implements GroupConfigService {
() -> new EasyRetryServerException("GroupName已经存在 {}", groupConfigRequestVO.getGroupName()));
// 保存组配置
doSaveGroupConfig(groupConfigRequestVO);
doSaveGroupConfig(systemUser, groupConfigRequestVO);
// 保存生成唯一id配置
doSaveSequenceAlloc(groupConfigRequestVO);
doSaveSequenceAlloc(systemUser, groupConfigRequestVO);
return Boolean.TRUE;
}
@ -81,11 +83,13 @@ public class GroupConfigServiceImpl implements GroupConfigService {
/**
* 保存序号生成规则配置失败
*
* @param systemUser
* @param groupConfigRequestVO 场景通知配置类
*/
private void doSaveSequenceAlloc(final GroupConfigRequestVO groupConfigRequestVO) {
private void doSaveSequenceAlloc(UserSessionVO systemUser, final GroupConfigRequestVO groupConfigRequestVO) {
SequenceAlloc sequenceAlloc = new SequenceAlloc();
sequenceAlloc.setGroupName(groupConfigRequestVO.getGroupName());
sequenceAlloc.setNamespaceId(systemUser.getNamespaceId());
sequenceAlloc.setStep(systemProperties.getStep());
sequenceAlloc.setUpdateDt(LocalDateTime.now());
Assert.isTrue(1 == sequenceAllocMapper.insert(sequenceAlloc), () -> new EasyRetryServerException("failed to save sequence generation rule configuration [{}].", groupConfigRequestVO.getGroupName()));
@ -141,7 +145,7 @@ public class GroupConfigServiceImpl implements GroupConfigService {
public PageResult<List<GroupConfigResponseVO>> getGroupConfigForPage(GroupConfigQueryVO queryVO) {
LambdaQueryWrapper<GroupConfig> groupConfigLambdaQueryWrapper = new LambdaQueryWrapper<>();
groupConfigLambdaQueryWrapper.eq(GroupConfig::getNamespaceId, queryVO.getNamespaceId());
groupConfigLambdaQueryWrapper.eq(GroupConfig::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId());
if (StrUtil.isNotBlank(queryVO.getGroupName())) {
groupConfigLambdaQueryWrapper.like(GroupConfig::getGroupName, queryVO.getGroupName() + "%");
}
@ -172,10 +176,11 @@ public class GroupConfigServiceImpl implements GroupConfigService {
return pageResult;
}
private void doSaveGroupConfig(GroupConfigRequestVO groupConfigRequestVO) {
private void doSaveGroupConfig(UserSessionVO systemUser, GroupConfigRequestVO groupConfigRequestVO) {
GroupConfig groupConfig = GroupConfigConverter.INSTANCE.convert(groupConfigRequestVO);
groupConfig.setCreateDt(LocalDateTime.now());
groupConfig.setVersion(1);
groupConfig.setNamespaceId(systemUser.getNamespaceId());
groupConfig.setGroupName(groupConfigRequestVO.getGroupName());
groupConfig.setDescription(Optional.ofNullable(groupConfigRequestVO.getDescription()).orElse(StrUtil.EMPTY));
if (Objects.isNull(groupConfigRequestVO.getGroupPartition())) {
@ -236,7 +241,7 @@ public class GroupConfigServiceImpl implements GroupConfigService {
}
@Override
public List<GroupConfigResponseVO> getAllGroupNameList(final List<String> namespaceId) {
public List<GroupConfigResponseVO> getAllGroupConfigList(final List<String> namespaceId) {
ConfigAccess<GroupConfig> groupConfigAccess = accessTemplate.getGroupConfigAccess();
List<GroupConfig> groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper<GroupConfig>()
@ -246,4 +251,16 @@ public class GroupConfigServiceImpl implements GroupConfigService {
return GroupConfigResponseVOConverter.INSTANCE.toGroupConfigResponseVO(groupConfigs);
}
@Override
public List<String> getAllGroupNameList() {
ConfigAccess<GroupConfig> groupConfigAccess = accessTemplate.getGroupConfigAccess();
List<GroupConfig> groupConfigs = groupConfigAccess.list(new LambdaQueryWrapper<GroupConfig>()
.in(GroupConfig::getNamespaceId, UserSessionUtils.currentUserSession().getNamespaceId())
.select(GroupConfig::getGroupName)).stream()
.collect(Collectors.toList());
return groupConfigs.stream().map(GroupConfig::getGroupName).collect(Collectors.toList());
}
}

View File

@ -6,6 +6,7 @@ import cn.hutool.crypto.SecureUtil;
import com.aizuda.easy.retry.server.common.config.SystemProperties;
import com.aizuda.easy.retry.server.common.exception.EasyRetryServerException;
import com.aizuda.easy.retry.server.web.model.request.UserPermissionRequestVO;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.service.convert.NamespaceResponseVOConverter;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.NamespaceMapper;
import com.aizuda.easy.retry.template.datasource.persistence.mapper.SystemUserMapper;
@ -76,20 +77,20 @@ public class SystemUserServiceImpl implements SystemUserService {
systemUserResponseVO.setToken(token);
systemUserResponseVO.setMode(systemProperties.getMode().name());
getPermission(systemUser, systemUserResponseVO);
getPermission(systemUser.getRole(), systemUser.getId(), systemUserResponseVO);
return systemUserResponseVO;
}
private void getPermission(final SystemUser systemUser, final SystemUserResponseVO systemUserResponseVO) {
private void getPermission(Integer role, Long userId, final SystemUserResponseVO systemUserResponseVO) {
LambdaQueryWrapper<Namespace> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(Namespace::getId, Namespace::getUniqueId, Namespace::getName);
if (RoleEnum.USER.getRoleId().equals(systemUser.getRole())) {
if (RoleEnum.USER.getRoleId().equals(role)) {
List<SystemUserPermission> systemUserPermissions = systemUserPermissionMapper.selectList(
new LambdaQueryWrapper<SystemUserPermission>()
.select(SystemUserPermission::getNamespaceId)
.eq(SystemUserPermission::getSystemUserId, systemUser.getId())
.eq(SystemUserPermission::getSystemUserId, userId)
.groupBy(SystemUserPermission::getNamespaceId));
queryWrapper.in(Namespace::getId, systemUserPermissions.stream()
.map(SystemUserPermission::getNamespaceId).collect(Collectors.toList()));
@ -101,11 +102,11 @@ public class SystemUserServiceImpl implements SystemUserService {
}
@Override
public SystemUserResponseVO getUserInfo(SystemUser systemUser) {
public SystemUserResponseVO getUserInfo(UserSessionVO systemUser) {
SystemUserResponseVO systemUserResponseVO = SystemUserResponseVOConverter.INSTANCE.convert(systemUser);
systemUserResponseVO.setMode(systemProperties.getMode().name());
getPermission(systemUser, systemUserResponseVO);
getPermission(systemUser.getRole(), systemUser.getId(), systemUserResponseVO);
return systemUserResponseVO;
}
@ -227,7 +228,9 @@ public class SystemUserServiceImpl implements SystemUserService {
throw new EasyRetryServerException("用户不存在");
}
return getUserInfo(systemUser);
SystemUserResponseVO responseVO = SystemUserResponseVOConverter.INSTANCE.convert(systemUser);
getPermission(systemUser.getRole(), systemUser.getId(), responseVO);
return responseVO;
}
@Override

View File

@ -0,0 +1,20 @@
package com.aizuda.easy.retry.server.web.util;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* @author www.byteblogs.com
* @date 2023-11-22 23:14:53
* @since 2.4.0
*/
public final class UserSessionUtils {
public static UserSessionVO currentUserSession() {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
return (UserSessionVO) request.getAttribute("currentUser");
}
}

View File

@ -70,6 +70,14 @@ export function delNamespace (id) {
})
}
export function updateNamespace (data) {
return request({
url: api.addNamespace,
method: 'put',
data
})
}
export function addNamespace (data) {
return request({
url: api.addNamespace,

View File

@ -0,0 +1,36 @@
<template>
<a-dropdown>
<a-menu slot="overlay" @click="handleMenuClick">
<a-menu-item :key="item.uniqueId" v-for="item in namespaceIds">
<a href="javascript:;">{{ item.name }}</a>
</a-menu-item>
</a-menu>
<a-button shape="round"> {{ name }} <a-icon type="down" /> </a-button>
</a-dropdown>
</template>
<script>
import namespaceMixin from '@/store/namespace-mixin'
import storage from 'store'
import { APP_NAMESPACE } from '@/store/mutation-types'
export default {
mixins: [namespaceMixin],
data () {
return {
namespaceIds: [],
name: 'Default'
}
},
mounted () {
setTimeout(() => {
this.namespaceIds = this.$store.getters.namespaces
this.name = this.namespaceIds.find(i => i.uniqueId === storage.get(APP_NAMESPACE)).name
}, 1500)
},
methods: {
handleMenuClick (e) {
this.name = this.namespaceIds.find(i => i.uniqueId === e.key).name
this.$store.dispatch('setNamespace', e.key)
}
}
}
</script>

View File

@ -1,21 +1,6 @@
<template>
<div :class="wrpCls">
<a-dropdown>
<span placement="bottomRight">
Default <a-icon type="down" />
</span>
<a-menu slot="overlay">
<a-menu-item>
<a href="javascript:;">Uat</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">Dev</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">Prod</a>
</a-menu-item>
</a-menu>
</a-dropdown>
<Namespace/>
<a href="https://www.easyretry.com" target="_blank" :class="prefixCls"><a-icon type="question-circle" :style="{ fontSize: '18px', color: '#08c' }"/></a>
<avatar-dropdown :menu="showMenu" :current-user="currentUser" :class="prefixCls"/>
<!-- <select-lang :class="prefixCls" />-->
@ -25,12 +10,14 @@
<script>
import AvatarDropdown from './AvatarDropdown'
import SelectLang from '@/components/SelectLang'
import Namespace from '@/components/GlobalHeader/Namespace'
export default {
name: 'RightContent',
components: {
AvatarDropdown,
SelectLang
SelectLang,
Namespace
},
props: {
prefixCls: {

View File

@ -10,7 +10,8 @@ const getters = {
roles: state => state.user.roles,
userInfo: state => state.user.info,
addRouters: state => state.permission.addRouters,
multiTab: state => state.app.multiTab
multiTab: state => state.app.multiTab,
namespaces: state => state.user.namespaces
}
export default getters

View File

@ -10,7 +10,8 @@ const user = {
welcome: '',
avatar: '',
roles: [],
info: {}
info: {},
namespaces: []
},
mutations: {
@ -29,6 +30,9 @@ const user = {
},
SET_INFO: (state, info) => {
state.info = info
},
SET_NAMESPACES: (state, namespaces) => {
state.namespaces = namespaces
}
},
@ -56,6 +60,8 @@ const user = {
permissions: permissionsConfig(result.role, result.mode)
}
commit('SET_NAMESPACES', result.namespaceIdList)
if (result.role && result.role.permissions.length > 0) {
const role = result.role
role.permissions = result.role.permissions

View File

@ -0,0 +1,16 @@
import { mapState } from 'vuex'
const namespaceMixin = {
computed: {
...mapState({
currentLang: state => state.app.lang
})
},
methods: {
setNamespace (namespaceId) {
this.$store.dispatch('setNamespace', namespaceId)
}
}
}
export default namespaceMixin

View File

@ -3,7 +3,7 @@ import store from '@/store'
import storage from 'store'
import notification from 'ant-design-vue/es/notification'
import { VueAxios } from './axios'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { ACCESS_TOKEN, APP_NAMESPACE } from '@/store/mutation-types'
// 创建 axios 实例
const request = axios.create({
@ -44,11 +44,16 @@ const errorHandler = (error) => {
// request interceptor
request.interceptors.request.use(config => {
const token = storage.get(ACCESS_TOKEN)
const namespaceId = storage.get(APP_NAMESPACE)
// 如果 token 存在
// 让每个请求携带自定义 token 请根据实际情况自行修改
if (token) {
config.headers['EASY-RETRY-AUTH'] = token
}
if (namespaceId) {
config.headers['EASY-RETRY-NAMESPACE-ID'] = namespaceId
}
return config
}, errorHandler)

View File

@ -66,7 +66,7 @@ export default {
e.preventDefault()
this.form.validateFields((err, values) => {
if (!err) {
if (this.formType === 'create') {
if (!this.isEdit) {
addNamespace(values).then(res => {
this.$message.success('操作成功')
this.$emit('refreshTable', 1)