import axios from 'axios'
// import qs from 'qs'
// import message from '@/components/public/message/src'
import router from '@/router/index'
import {getCookie,clonAllCookie} from '@/tool/cookie'
// import cookie from '@/tools/cookie.js'

axios.defaults.timeout = 60000;                        //响应时间
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';        //配置请求头
axios.defaults.headers.post["Content-Type"] = "application/json";


axios.defaults.headers.post['lang'] = 'en';        //配置语言请求头
axios.defaults.withCredentials = true;  //跨域携带cookie
import { message } from 'ant-design-vue';
import store from '@/store';
// if(process.env.NODE_ENV == "development"){
// 	axios.defaults.baseURL = "";   //配置接口地址
// }else{
// 	axios.defaults.baseURL = process.env.VUE_APP_BASE_URL;   //配置接口地址
// }
// let httpIp 
// if(process.env.NODE_ENV == 'development'){
// 	httpIp = 'http://192.168.1.12:10086'
// }else{
// 	httpIp = ''
// }
let httpIp = process.env.NODE_ENV == 'development' ? "" : "";
// let httpIp = process.env.NODE_ENV == 'development' ? "https://192.168.1.8:10086" : "";

axios.defaults.baseURL = httpIp;   //配置接口地址
// console.log(axios.defaults.baseURL);
axios.defaults.baseURL = process.env.VUE_APP_BASE_URL;   //配置接口地址

// 创建取消令牌
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
// console.log(process.env.VUE_APP_BASE_URL);
const filterHttpsUrl = ['/api/portfolio/page','/api/portfolio/detail','/api/account/preLogin']
//POST传参序列化(添加请求拦截器)
axios.interceptors.request.use((config) => {
    //在发送请求之前做某件事
	// config.cancelToken = source.token
    if(config.method  === 'post' || config.method  === 'put' || config.method  === 'delete'){
        // config.data = qs.stringify(config.data);
        // config.data = JSON.stringify(config.data);
    }
    // config.headers.Authorization = 'Bearer-eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiIyIiwic3ViIjoie1wiaWRcIjoyLFwidXNlcm5hbWVcIjpcImxpcnNcIn0iLCJpYXQiOjE2NjU3NDEwODcsImlzcyI6IkRXSiIsImF1dGhvcml0aWVzIjoiW10iLCJleHAiOjE2NzQzODEwODd9.ShM9R_NNFD7oo1OvxrEgg7PFeWinOuAKkuInUCMQupp66s64Hhv8tN0Wwr83nIN4rHPqtn95wmd4msWcvaFYJA'; 
	if(filterHttpsUrl.indexOf(config.url) == -1){
		config.headers.Authorization = getCookie('token'); 
	}else{
		config.headers.Authorization = '';
	}
    return config;
},(error) =>{
    return Promise.reject(error);
});
let isLoginTime = false
const binaryToUrl = (binary,type = 'application/octet-stream')=>{
	let blob = new Blob([binary], {type});
	let url = URL.createObjectURL(blob);
	return url
}
//返回状态判断(添加响应拦截器)
axios.interceptors.response.use((res) =>{
	// if(res.data.data == null){
	// 	message.warning(res.data.errMsg)
    //     return Promise.reject(res.data);
	// }else 
	if(res.config.env.binary){
		let url = binaryToUrl(res.data,res.config.env.binaryType)
		return Promise.resolve({url,data:res.data})
	}
	if (res.data) {
		if (res.data.errCode === 0) {
            // message.error(res.data.errMsg)
            return Promise.resolve(res.data.data);
        } else if(res.data.errCode === 1){
			message.warning(res.data.errMsg)
            return Promise.reject(res.data);
        } else if(res.data.errCode === 2){
            return Promise.reject(res.data);
		}else if(res.data.errCode === -1){
			message.error(res.data.errMsg)
            return Promise.reject(res.data);
		}

    } else {
		if (res.data.errCode === 0) {
			message.warning(res.data.errMsg)
			return Promise.reject(res.data);
        } else if(res.data.errCode === 1){
			message.warning(res.data.errMsg)
            return Promise.reject(res.data);
        } else if(res.data.errCode === 2){
            return Promise.reject(res.data);
		}else if(res.data.errCode === -1){
			message.error(res.data.errMsg)
            return Promise.reject(res.data);
		}
    }
}, function(error) {
    if(error?.response?.status === 401 && router.currentRoute._value.name != 'setIdentification'){//如果是记录浏览器页面就不跳转login
		// return
		clonAllCookie()
		if(!isLoginTime){
			isLoginTime = true
			let isSystemUserRouteList = ['/Square']//如果是这两个页面就无需跳转未登录页
			let sSystemUser = false
			for (let index = 0; index < isSystemUserRouteList.length; index++) {
				if(router.currentRoute.value.path.indexOf(isSystemUserRouteList[index]) > -1){
					sSystemUser = true
					break
				}
			}
			if(!sSystemUser){
				router.replace('/')
			}
			message.warning('Please login and try again~')
			store.commit('createDetail')
			store.commit('createProbject')
			setTimeout(()=>[
				isLoginTime = false
			],2000)
		}
		// source.cancel('取消后续接口调用');
        return Promise.reject()
    }
    let data_new = error?.response?.data
    // message.error(data_new?.errMsg || 'Error: server exception')
    return Promise.reject(data_new);
});
export const Https = {
    httpUrls: {
        interfaceUrl: '',
		parseGoogleCredential:'/api/third/party/parseGoogleCredential',//谷歌登录注册
		parseWeChatCode:'/api/third/party/parseWeChatCode',//微信登录
        accountIsLogin:'/api/account/isLogin', //判断用户是否登录
        accountLogin:`/api/account/login`, //账号密码登录接口
        getUserLanguage:`/api/account/getUserLanguage`, //获取当前用户语言
        changeUserLanguage:`/api/account/changeUserLanguage`, //切换用户当前语言
        uploadAvatar:`/api/account/uploadAvatar`, //修改头像
        editUserName:`/api/account/editUserName`, //修改用户名
        updateUserInfo:`/api/account/updateUserInfo`, //修改国家职业
        accountDetail:`/api/account/getAccountDetail`, //用户详细信息

        trialUserLogout:`/account/trialUserLogout`, //试用用户退出登录接口
        completeGuidancet:`/api/account/completeGuidance`, //用户指引结束

        getExpiredTime:`/api/account/getExpiredTime`, //获取用户到期时间

        addNoLoginRequired:`/api/third/party/addNoLoginRequired`, //机房用户注册
        deleteNoLoginRequired:`/api/third/party/deleteNoLoginRequired`, //机房用户注销
        noLoginRequired:`api/account/noLoginRequired`, //机房用户登录
        existNoLoginRequired:`/api/third/party/existNoLoginRequired`, //获取唯一标识是否存在

		deleteNoLoginRequiredNew:`/api/third/party/deleteNoLoginRequiredNew`, //机房用户注销
        addNoLoginRequiredNew:`api/third/party/addNoLoginRequiredNew`, //机房用户注册
        updateNoLoginRequiredNew:`api/third/party/updateNoLoginRequiredNew`, //机房用户更新
		
        endpoint:`api/third/party/your-secured-endpoint`, //获取唯一标识是否存在
		

		designWorksRegister:'/api/account/designWorksRegister', //注册
		designWorksRegisterCode:'/api/account/designWorksRegisterCode', //注册
		

        preLogin:'/api/account/preLogin',//预先登入
        accountSendEmail:`/api/account/sendEmail`, //发送邮件
        accountResetPwd:'/api/account/resetPwd', //忘记密码修改
        accountLogout:'/api/account/logout',//登出
        accountBindEmail:'/api/account/bindEmail', //绑定邮箱
        bindGoogle:'/api/account/bindGoogle', //绑定谷歌
        bindWeChat:'/api/account/bindWeChat', //绑定微信
        unbindGoogle:`/api/account/unbindGoogle`, //取消绑定谷歌
        unbindWeChat:'/api/account/unbindWeChat', //取消绑定微信
        elementGeneratePrint:'/api/element/generatePrint', //生成印花
        elementSavePrint:'/api/element/savePrint',//保存印花
        getRgbByTcx:'/api/element/getRgbByTcx', // 通过hsv值获取潘通信息
        getRgbByHsv:'/api/element/getRgbByHsv', //通过hsv值获取潘通信息
        designCollection:`/api/design/designCollection`, //设计 Conllection
        reDesignCollection:`/api/design/reDesignCollection`,//重新设计 Conllection
        countDesignProcess:'/api/design/countDesignProcess', //统计design进度
        getDesignResult:'/api/design/getDesignResult', //查询design结果
        designSort:`/api/design/sort`, //design排序

        designProcess:`/api/design/designProcess`, //统计design进度
        designGetModel:`/api/design/getModel`, //导出获取模特链接

		//充值相关
        productList:`/api/product/list`, //获取商品列表
        payAlipay:`/api/ali-pay/trade/page/pay`, //支付宝确认支付
        payAlipayHK:`/api/alipay-hk/createOrder`, //香港支付宝确认支付
        payStripe:`/api/stripe/createOrder`, //Stripe支付
        payPaypal:`/api/paypal/trade`, //paypal确认支付
        getCredits:`/api/credits/getCredits`, //查询用户积分

        cancelSubscription:`/api/stripe/cancelSubscription`, //取消订阅
		
        orderInfoList:`/api/order-info/list`, //查询订单列表
        getCreditsDetail:`/api/credits/getCreditsDetail`, //查询积分列表
        tradeRefundAlipay:`/api/ali-pay/trade/refund`, //支付宝退款
        tradeRefundPaypal:`/api/paypal/trade/refund`, //paypal退款

        tradeQuery:`/api/ali-pay/trade/query/{orderNo}`, //查询订单状态
		
        getRgbByHsvBatch:`/api/element/getRgbByHsvBatch`, //通过hsv值数组批量获取潘通信息
        designLike:`/api/design/like`, //Design Like
        designDislike: `/api/design/dislike`, //Design Dislike
        queryUserGroup:`/api/history/queryUserGroup`, //History用户分页分组列表
        deleteUserGroup:`/api/history/deleteUserGroup`, //History删除用户分组
        updateUserGroupName:`/api/history/updateUserGroupName`, //History修改用户分组名
        historyChoose:`/api/history/choose`, //History choose
        getDesignDetail:`/api/design/detail/getDetail`,//查询design详情
        designSingleWithGradient:`/api/design/detail/designSingleWithGradient`,//查询需要更新mask列表
        getNextSysElement:'/api/design/detail/getNextSysElement',//切换系统的element
        detailPrintDot:'/api/design/detail/printDot',//print打点预览
        designSingle:`/api/design/detail/designSingle`,//单个design
        queryLibraryPage:`/api/library/queryLibraryPage`,//Library分页列表
        libraryUpload:`/api/library/upload`, // Library文件上传
        setSketchLibrary:`/api/library/updateLibraryLevel2Type`, // Library文件上传
		
		queryClassification:`/api/classification/queryClassification`,//标签类别查询
		saveOrUpdate:`/api/classification/saveOrUpdate`,//标签类别新增修改
		classificationDelete:`/api/classification/delete`,//标签类别新增修改
		relationLibrary:`/api/classification/relationLibrary`,//标签类别新增修改
		getRelClassificationIdList:`/api/classification/getRelClassificationIdList`,//标签类别新增修改
		getRelPublicClassificationIdList:`/api/classification/getRelPublicClassificationIdList`,//多选获取公共标签
		editRelPublicClassificationIdList:`/api/classification/editRelPublicClassificationIdList`,//多选修改公共标签
		
		//模块化
		saveOrUpdate:`/api/project/saveOrUpdate`,//模块化新增修改
		getModuleContent:`/api/project/getModuleContent`,//获取模块内容
		saveModuleContent:`/api/project/saveModuleContent`,//储存模块内容
		historyProject:`/api/project/page`,//项目记录
		projectDetail:`/api/project/delete`,//删除项目
		//3d
		threeDPage:`/api/project/threeDPage`,
		downloadZip:`/api/project/downloadZip`,//下载zip
		getThreeDSize:`/api/project/getThreeDSize`,//下载列表
		getLayoutDetail:`/api/project/getLayoutDetail`,//获取3d详情
		getThreeDGlb:`/api/project/getThreeDGlb`,
		selectHistoryProject:`/api/project/choose`,//选择项目
		getMannequinDetail:`/api/project/getMannequinDetail`,//模块化查看模特点位
		modifyProportion:`/api/generate/modifyProportion`,//模特拉伸
		addSysModelToLib:`/api/library/addSysModelToLib`,
		poselikeOrDisike:`/api/generate/likeOrDislike`,//postTransform like
		getAllPose:`/api/generate/getAllPose`,//获取动作
		

		
		//拼贴
		genSketchRecon:`/api/generate/genSketchRecon`,
		saveReconCanvas:`/api/generate/saveReconCanvas`,
		
		//动作变换
		poseTransform:`/api/generate/poseTransform`,
		poseTransformResult:`/api/generate/poseTransformResult`,
		
        batchUpdateLibraryName:'/api/library/batchUpdateLibraryName',//Library修改用户文件名
        batchDeleteLibrary:'/api/library/batchDeleteLibrary',//删除library
        queryLibraryTopAndBottomPage:'/api/library/queryLibraryTopAndBottomPage',//Library分页列表(查询top和bottom)
        saveOrEditTemplatePoint:'/api/library/saveOrEditTemplatePoint',//保存或者编辑template打点
        libraryModelsDot:'/api/library/modelsDot',//Models打点预览
        chatStreamTest:`/api/python/chatStream`,//机器人助力
        pictureLikeOrUnLike:`/api/python/pictureLikeOrUnLike`,//机器人生成图喜欢
        getBloodBars:`/api/python/getBloodBars`,//机器人血条
		//工作空间
        workspaceDetail:`/api/workspace/detail`,//用户习惯详情
        workspaceenumValues:`/api/workspace/enumValues`,//getSex
		
        workspaceRemove:`/api/workspace/remove`,//删除用户习惯详情
        workspacesaveOrUpdate:`/api/workspace/saveOrUpdate`,//修改用户习惯详情
        getMannequins:`/api/workspace/getMannequins`,//模特
        getStyleList:`/api/workspace/styleList`,//获取所有风格列表
		
		workspaceList:`/api/workspace/list`,
        sketchAndPrintGenerate:'/api/generate/sketchAndPrint',//sketchGenerate生成图片

        generatePrepare:'/api/generate/prepare',//开始生成generate图片
        generateStopWaiting:'/api/generate/stopWaiting',//取消生成
        generateResult:'/api/generate/result',//获取生成结果
		generateLike:'/api/generate/like',//喜欢ganerate图片
		generateDislike:'/api/generate/dislike',//喜欢ganerate图片
		imageToSketch:'/api/generate/imageToSketch',//成品图转为线稿
		modifySketch:'/api/generate/modifySketch',//修改画布内容并且储存

        elementUpload:`/api/element/upload`,//上传图片
        // oldHis:`/oldHis/history/queryUserGroup`,//上传图片
		sketchBoardsBoundingBox:`/api/design/sketchBoardsBoundingBox`,//裁剪sketch图片

		trialOrderList:`/api/account/trialOrderList`,//获取审批列表
		switchIsAutoApproval:`/api/account/switchIsAutoApproval`,//切换是否自动审批
		getIsAutoApproval:`/api/account/getIsAutoApproval`,//获取是否自动审批
		trialOrderApproval:`/api/account/trialOrderApproval`,//通过审批
		trialOrderRefuse:`/api/account/trialOrderRefuse`,//拒绝审批
		
		//管理员接口
		//查询所有试用用户
		inquiryGetTrial:`/api/inquiry/getTrial`,//查询所有试用用户
		getCities:`/api/inquiry/getCities`,//获取所有付款订单使用的国家
		getUserInfo:`/api/inquiry/getUserInfo`,//查询所有用户
		queryTransaction:`/api/inquiry/queryTransaction`,//查询交易记录
		queryTransactionDownload:`/api/inquiry/queryTransaction/download`,//导出交易记录
		//查询某个时间内design点击次数
		getDesignStatistic:`/api/inquiry/getDesignStatistic`,//拒绝审批
		getAllQuestionnaire:`/api/inquiry/getAllQuestionnaire`,//拒绝审批
		getActiveUserFunc:`/api/inquiry/getActiveUserFunc`,//获取各模块功能
		recentActiveUser:`/api/inquiry/recentActiveUser`,//获取近期活跃用户
		recentActiveUserChart:`/api/inquiry/recentActiveUserChart`,//获取近期活跃用户图表数据
		recentNewUser:`/api/inquiry/recentNewUser`,//获取近期新增用户
		recentNewUserChart:`/api/inquiry/recentNewUserChart`,//获取新增用户图表
		trialUserCountry:`/api/inquiry/trialUserCountry`,//试用用户国家-城市分布
		conversionRate:`/api/inquiry/conversionRate`,//试用用户国家-城市分布
		getAllUserId:`/api/inquiry/getAllUserId`,//获取所有用户id和Name
		adminAddUser:`/api/inquiry/addUser`,//添加用户
		modifyUser:`/api/inquiry/modifyUser`,//修改用户
		publishSysMessage:`/api/message/publishSysMessage`,//发布系统任务
		//affiliate接口
		viewsIncrease:`/api/affiliate/viewsIncrease`,//增加访问量
		affiliateRegistration:`/api/affiliate/registration`,//affiliate注册
		personalCenter:`/api/affiliate/personalCenter`,//affiliate个人中心
		affiliateList:`/api/affiliate/list`,//affiliate审批列表
		getEachAffiliateGeneratedRevenue:`/api/affiliate/getEachAffiliateGeneratedRevenue`,//affiliate每个用户根据日期查询收益
		affiliateApproval:`/api/affiliate/approval`,//affiliate同意 审批
		getPersonalMonthlyIncome:`/api/affiliate/getPersonalMonthlyIncome`,//affiliate图表接口
		
		getTasksList:`/api/tasks/getList`,//获取w为执行完的所有任务
		getTasksHistory:`/api/tasks/getAllTask`,//获取所有任务列表
		prepareForSR:`/api/python/prepareForSR`,//超分
		

		//作品广场
		publish:`/api/portfolio/publish`,//发布作品到作品广场
		getPorfolio:`/api/portfolio/page`,//查询作品广场
		getPorfolioDetail:`/api/portfolio/detail`,//查询作品广场作品详情
		setPorfolioChoose:`/api/portfolio/choose`,//二次创作
		portfolioLike:`/api/portfolio/like`,//作品广场点赞
		portfolioNoLike:`/api/portfolio/unlike`,//作品广场取消点赞
		portfolioComment:`/api/portfolio/comment`,//作品广场评论
		portfolioCommentPage:`/api/portfolio/commentPage`,//作品广场评论列表
		commentDelete:`/api/portfolio/commentDelete`,//删除评论
		porfolioDelete:`/api/portfolio/delete`,//删除作品
		porfolioFollow:`/api/portfolio/follow`,//删除作品
		porfolioFollow:`/api/portfolio/follow`,//关注
		porfolioCancelFollow:`/api/portfolio/cancelFollow`,//取消关注
		porfolioGetFolloweeList:`/api/portfolio/getFolloweeList`,//获取关注列表
		porfolioGetFollowerList:`/api/portfolio/getFollowerList`,//获取粉丝列表
		
		//product生成
		toProduct:`/api/history/toProduct`,//开始生成
		toProductImageResult:`/api/history/toProductImageResult`,//获取结果
		toProductImageElementUpload:`/api/history/toProductImageElementUpload`,//上传
		productImageLike:`/api/history/productImageLike`,//like生成结果
		productImageUnLike:`/api/history/productImageUnLike`,//取消like生成结果
		productImageLikeList:`/api/history/productImageLikeList`,//like生成结果
		
		//打光
		relight:`/api/history/relight`,//开始生成
		relightResult:`/api/history/relightResult`,//开始生成
		
		//保存画布
		canvasElementUpload:`/api/history/canvasElementUpload`,//画布上传临时图片
		exportSave:`/api/history/exportSave`,//保存画布
		exportSearch:`/api/history/exportSearch`,//保存画布

		//活动
		activity:`/api/account/activity`,

		//bradDNA
		brandLogoUpload:`/api/history/brandLogoUpload`,//上传bradDNA
		brandDNAGenerate:`/api/history/brandDNAGenerate`,//上传bradDNA
		brandDNAUpload:`/api/history/brandDNAUpload`,//上传DNA图片
		getInitializeProgress:`/api/history/getInitializeProgress`,//获取brand进度
		brandDNADelete:`/api/history/brandDNADelete`,//删除brandDna
		
		brandDNAPage:`/api/history/brandDNAPage`,//brand列表
		brandDNASaveOrUpdate:`/api/history/brandDNASaveOrUpdate`,//提交个人信息
		productImageInitialize:`/api/history/productImageInitialize`,//产品识别
		//调查问卷
		questionnaire:`/api/account/questionnaire`,//保存画布

		//消息系统
		getUnreadCount:`/api/message/getUnreadCount`,//获取未读消息
		setReadStatus:`/api/message/setReadStatus`,//设置消息已读
		getHistoryNotification:`/api/message/getHistoryNotification`,//获取历史消息
		oneClickRead:`/api/message/oneClickRead`,//全部设为已读
		personalHomepage:`/api/account/personalHomepage`,//获取个人主页信息
		
    },

    axiosGet(url,config) {
        return new Promise((resolve, reject) => {
			if(isLoginTime) {
				resolve('')
				return
			}
            axios.get(url,config).then(response => {
                    resolve(response)
                }).catch((error) => {
                    reject(error)
            })
        });    
    },

    axiosPut(url, data) {
        return new Promise((resolve, reject) => {
			if(isLoginTime) {
				resolve('')
				return
			}
            axios.put(url, data).then(response => {
                    resolve(response)
                }).catch((error) => {
                    reject(error)
            })
        });    
    },

    axiosPost(url, data,config) {
        return new Promise((resolve, reject) => {
			if(isLoginTime) {
				resolve('')
				return
			}
            axios.post(url, data,config).then(response => {
                    resolve(response)
                }).catch((error) => {
                    reject(error)
            })
        });    
    },

    axiosDelete(url, newData) {
        return new Promise((resolve, reject) => {
			if(isLoginTime) {
				resolve('')
				return
			}
            axios.delete(url,{data:newData}).then(response => {
                    resolve(response)
                }).catch((error) => {
                    reject(error)
            })
        });    
    },

 



}
