| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- import { ResPage, StoreUser } from "@/api/interface/index";
- import { PORT_NONE } from "@/api/config/servicePort";
- import http from "@/api";
- import http_store from "@/api/indexStore";
- import http_ai from "@/api/indexAi";
- import axios from "axios";
- import { ResultEnum } from "@/enums/httpEnum";
- import { useUserStore } from "@/stores/modules/user";
- import { ElMessage } from "element-plus";
- import { LOGIN_URL } from "@/config";
- import router from "@/routers";
- // 创建专门用于 STORE API 的 axios 实例(单例)
- const storeAxiosInstance = axios.create({
- baseURL: import.meta.env.VITE_API_URL_STORE as string,
- timeout: ResultEnum.TIMEOUT as number,
- withCredentials: true
- });
- // 添加请求拦截器
- storeAxiosInstance.interceptors.request.use(
- (config: any) => {
- const userStore = useUserStore();
- if (config.headers) {
- config.headers.Authorization = userStore.token;
- }
- return config;
- },
- (error: any) => {
- return Promise.reject(error);
- }
- );
- // 添加响应拦截器
- storeAxiosInstance.interceptors.response.use(
- (response: any) => {
- const { data } = response;
- const userStore = useUserStore();
- // 登录失效
- if (data.code == ResultEnum.OVERDUE) {
- userStore.setToken("");
- router.replace(LOGIN_URL);
- ElMessage.error(data.msg);
- return Promise.reject(data);
- }
- // 全局错误信息拦截
- if (data.code && data.code !== ResultEnum.SUCCESS) {
- ElMessage.error(data.msg);
- return Promise.reject(data);
- }
- return data;
- },
- async (error: any) => {
- const { response } = error;
- // 请求超时 && 网络错误单独判断
- if (error.message.indexOf("timeout") !== -1) ElMessage.error("请求超时!请您稍后重试");
- if (error.message.indexOf("Network Error") !== -1) ElMessage.error("网络错误!请您稍后重试");
- // 根据服务器响应的错误状态码,做不同的处理
- if (response?.data?.message) {
- ElMessage.error(response.data.message);
- }
- return Promise.reject(error);
- }
- );
- /**
- * 获取优惠券列表
- * @param params 请求参数
- * @returns 优惠券列表数据
- */
- export const getCouponList = params => {
- return http.post<ResPage<any>>(PORT_NONE + `/couponPlatform/getCouponList`, params);
- };
- /**
- * 获取优惠券模板列表
- * @param params 请求参数
- * @returns 优惠券模板列表数据
- */
- export const getCouponTemplateList = params => {
- return http.post<ResPage<any>>(PORT_NONE + `/discountCouponPlatform/getCouponTemplateList`, params);
- };
- /**
- * 获取运营活动列表(分页查询)
- * @param params { activityName?: string, activityStatus?: string, pageNum?: string, pageSize?: string, status?: number, storeId?: string, storeName?: string }
- * @returns 运营活动列表数据
- */
- export const getActivityList = (params: {
- activityName?: string; // 活动名称(模糊查询)
- activityStatus?: string; // 活动状态
- activityType?: number; // 活动类型(1-营销活动,2-评论有礼)
- pageNum?: string; // 当前页
- pageSize?: string; // 每页数量
- status?: number; // 状态(1-待审核, 2-未开始, 3-审核拒绝, 4-已售罄, 5-进行中, 6-已下架, 7-已结束, 8-审核成功)
- storeId?: string; // 商户ID
- storeName?: string; // 商户名称(模糊查询)
- }) => {
- return storeAxiosInstance.get<ResPage<any>>(PORT_NONE + `/operationalActivity/detail`, { params });
- };
- /**
- * 获取运营活动详情
- * @param params 请求参数
- * @returns 运营活动详情数据
- */
- export const getActivityDetail = params => {
- return http.get<any>(PORT_NONE + `/operationalActivity/queryActivityById`, params);
- };
- /**
- * 新增运营活动
- * @param params 请求参数
- * @returns 新增结果
- */
- export const addActivity = params => {
- return http.post<any>(PORT_NONE + `/operationalActivity/create`, params);
- };
- /**
- * 更新运营活动
- * @param params 请求参数
- * @returns 更新结果
- */
- export const updateActivity = params => {
- return http.post<any>(PORT_NONE + `/operationalActivity/update`, params);
- };
- /**
- * 删除运营活动
- * @param params 请求参数
- * @returns 删除结果
- */
- export const deleteActivity = params => {
- return http.get<any>(PORT_NONE + `/operationalActivity/delete`, params);
- };
- /**
- * 更新运营活动状态
- * @param params 请求参数
- * @returns 更新结果
- */
- export const updateActivityStatus = params => {
- return http.get<any>(PORT_NONE + `/operationalActivity/updateStatus`, params);
- };
- /**
- * 获取活动规则级联选择器选项
- * @param params 请求参数
- * @returns 级联选择器选项数据
- */
- export const getActivityRuleOptions = (params?: any) => {
- return storeAxiosInstance.get<any>(PORT_NONE + `/userActionRewardRule/getRewardRuleList`, params);
- };
- /**
- * AI生成活动宣传图
- * @param params 请求参数 { text: string } - 活动描述文本
- * @returns 生成的图片数据
- */
- export const generatePromotionImage = (params: { text: string }) => {
- return http_ai.post<any>(`/ai/life-manager/api/v1/promotion_image/generate`, params);
- };
- /**
- * 活动案例列表(使用 VITE_API_URL_STORE)
- * @param params { uploadStatus?: number, activityName?: string, pageNum?: number, pageSize?: number }
- * @returns 活动案例列表
- */
- export const getPersonCaseList = (params: {
- storeId: number;
- hasResult?: number; // 上传情况:0-未上传,1-已上传(非必填)
- activityName?: string; // 所属活动/活动名称(非必填)
- pageNum?: number; // 当前页(非必填)
- pageSize?: number; // 每页条数(非必填)
- }) => {
- // 此接口需要使用 VITE_API_URL_STORE,使用专门的 axios 实例
- return storeAxiosInstance.post<ResPage<any>>(PORT_NONE + `/storeOperationalActivity/achievement/case/store/list`, params);
- };
- /**
- * 查询报名人员列表
- * @param params { storeId: number, status?: number, activityName?: string, pageNum?: number, pageSize?: number }
- * @returns 报名人员列表
- */
- export const getPersonnelList = (params: {
- storeId: number; // 商户ID(必填)
- status?: number; // 报名状态: 0-待审核, 1-拒绝, 2-通过(非必填)
- activityName?: string; // 活动名称(模糊查询)(非必填)
- pageNum?: number; // 页码,默认值:1(非必填)
- pageSize?: number; // 每页大小,默认值:10(非必填)
- }) => {
- return http.post<ResPage<any>>(PORT_NONE + `/operationalActivitySignup/queryList`, params);
- };
- /**
- * 查询案例详情
- * @param params { activityId: number, userId: number } - 活动ID(必填),用户ID(必填)
- * @returns 案例详情信息
- */
- export const getPersonCaseDetail = (params: { activityId: number; userId: number }) => {
- return storeAxiosInstance.get<any>(PORT_NONE + `/storeOperationalActivity/achievement/case/detail`, { params });
- };
- /**
- * 查询报名人员详情
- * @param params { id: number } - 报名ID(必填)
- * @returns 报名人员详情信息
- */
- export const getPersonnelDetail = (params: { id: number }) => {
- return http.post<any>(PORT_NONE + `/operationalActivitySignup/queryById`, params);
- };
- /**
- * 审核通过报名人员
- * @param params { id: number } - 报名ID(必填)
- * @returns 审核结果
- */
- export const approvePersonnel = (params: { id: number }) => {
- return http.post<any>(PORT_NONE + `/operationalActivitySignup/approve`, params);
- };
- /**
- * 审核拒绝报名人员
- * @param params { id: number, rejectReason?: string } - 报名ID(必填),拒绝原因(非必填)
- * @returns 审核结果
- */
- export const rejectPersonnel = (params: { id: number; rejectReason?: string }) => {
- return http.post<any>(PORT_NONE + `/operationalActivitySignup/reject`, params);
- };
- /**
- * 上传活动结果
- * @param params
- * @returns
- */
- export const uploadActivityResult = (params: {
- id: number; // 活动ID(必填)
- resultType: number; // 结果类型:0-文字,1-图片(必填)
- resultText?: string; // 结果文字,当resultType=0时使用(非必填)
- resultMediaUrl?: string; // 结果图片地址,当resultType=1时使用(非必填)
- }) => {
- return http.post<any>(PORT_NONE + `/operationalActivity/uploadResult`, params);
- };
|