前端: - 新增 EmptyLayout 空壳布局(无侧边栏/导航) - 新增 requestNoAuth Axios 实例(不注入 token) - 新增 integralExternal 路由模块(/integral-external/*) - permission.js 加入 whiteListPrefixes 前缀白名单跳过登录 - 新增 phoneDesensitize 手机号脱敏过滤器 - 新增三个免认证页面: · 积分订单页(/integral-external/order) · 用户积分页(/integral-external/user,手机号脱敏) · 用户积分明细子页(/integral-external/user/integral-detail) 后端: - 新增 ExternalIntegralController(无 @PreAuthorize) · GET /api/external/integral/order/list · GET /api/external/integral/user/list · POST /api/external/integral/log/list - WebSecurityConfig 加入 /api/external/integral/** permitAll 文档与工具: - 新增 coding plan、schedule、测试报告 - 新增 start-backend.sh / start-frontend.sh 本地启动脚本 - 新增 .mvn/wrapper/maven-wrapper.properties Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
/**
|
||
* 免认证 Axios 实例
|
||
* 供积分外部页面(/integral-external/*)使用。
|
||
* 不注入 Authori-zation token,不拦截 401 自动跳转登录页。
|
||
*/
|
||
import axios from 'axios';
|
||
import { Message } from 'element-ui';
|
||
import SettingMer from '@/utils/settingMer';
|
||
|
||
const service = axios.create({
|
||
baseURL: SettingMer.apiBaseURL,
|
||
timeout: 60000,
|
||
});
|
||
|
||
// 请求拦截器 — 不注入 token
|
||
service.interceptors.request.use(
|
||
(config) => {
|
||
// GET 请求防缓存
|
||
if (/get/i.test(config.method)) {
|
||
config.params = config.params || {};
|
||
config.params.temp = Date.parse(new Date()) / 1000;
|
||
}
|
||
return config;
|
||
},
|
||
(error) => Promise.reject(error),
|
||
);
|
||
|
||
// 响应拦截器 — 不拦截 401 跳转
|
||
service.interceptors.response.use(
|
||
(response) => {
|
||
const res = response.data;
|
||
if (res.code !== 0 && res.code !== 200) {
|
||
Message({
|
||
message: res.msg || res.message || '请求失败',
|
||
type: 'error',
|
||
duration: 5 * 1000,
|
||
});
|
||
return Promise.reject(new Error(res.msg || '请求失败'));
|
||
}
|
||
return res.data;
|
||
},
|
||
(error) => {
|
||
const msg = error.response
|
||
? `网络请求失败 (${error.response.status})`
|
||
: '网络连接失败,请检查服务器是否启动';
|
||
Message({ message: msg, type: 'error', duration: 5 * 1000 });
|
||
return Promise.reject(error);
|
||
},
|
||
);
|
||
|
||
export default service;
|