/**
 * api接口管理， 全部以$开头
 * @author terrfly
 * @site https://www.jeequan.com
 * @date 2021/12/17 09:57
 */

import http from './http.js'
import appConfig from '@/config/appConfig.js'
import {
	Base64
} from 'js-base64'
import infoBox from '@/commons/utils/infoBox.js'

export const req = {
	list: (uri, params) => {
		return http.req(uri, params, 'GET', false)
	},

	add: (uri, data) => {
		return http.req(uri, data, 'POST', false)
	},

	getById: (uri, bizId) => {
		return http.req(`${uri}/${bizId}`, {}, 'GET', false)
	},

	updateById: (uri, bizId, data) => {
		return http.req(`${uri}/${bizId}`, data, 'PUT', false)
	},

	delById: (uri, bizId) => {
		return http.req(`${uri}/${bizId}`, {}, 'DELETE', false)
	},
}

export const reqLoad = {
	list: (uri, params) => {
		return http.req(uri, params, 'GET')
	},

	add: (uri, data) => {
		return http.req(uri, data, 'POST')
	},

	getById: (uri, bizId) => {
		return http.req(`${uri}/${bizId}`, {}, 'GET')
	},

	updateById: (uri, bizId, data) => {
		return http.req(`${uri}/${bizId}`, data, 'PUT')
	},

	delById: (uri, bizId) => {
		return http.req(`${uri}/${bizId}`, {}, 'DELETE')
	},

	// 通用 新增 or 更新
	addOrUpdate: (bizId, url, data, showMessage = true) => {
		//包含bizId 请求的是修改接口
		if (bizId) {
			return reqLoad.updateById(url, bizId, data).then((res) => {
				if (showMessage) {
					return infoBox.showSuccessToast('更新成功').then(() => res)
				}
				return Promise.resolve(res)
			})
		} else {
			return reqLoad.add(url, data).then((res) => {
				if (showMessage) {
					return infoBox.showSuccessToast('新增成功').then(() => res)
				}
				return Promise.resolve(res)
			})
		}
	}
}

/** 上传文件 url  **/
export const API_URL_SINGLE_FILE_UPLOAD = '/api/ossFiles/singleFile'

/** 公告 **/
export const API_URL_SYS_ARTICLES = '/api/sysArticles'

/** 支付订单列表 */
export const API_URL_PAY_ORDER_LIST = '/api/payOrder'

/** 退款订单列表 */
export const API_URL_REFUND_LIST = '/api/refundOrder'

/** 商户应用 */
export const API_URL_MCH_APP_LIST = '/api/mchApps'

/** 门店列表 */
export const API_URL_MCH_STORE_LIST = '/api/mchStore'

/** 通知接收人列表 */
export const API_URL_WXMP_USER_LIST = '/api/wxmp'

/** 进件管理 */
export const API_URL_MCH_APPLYMENT_LIST = '/api/mchApplyments'

/** 员工管理 */
export const API_URL_SYS_USER_LIST = '/api/sysUsers'

/** 码牌管理 */
export const API_URL_SYS_CODE_LIST = '/api/mchQrCodes'

/** 通用设备管理 deviceType  1-喇叭  2-打印机 3-扫码POS 4-智能POS  6-刷脸设备*/
export const API_URL_SYS_DEVICE_LIST = '/api/store/device'

/** 辅助终端管理*/
export const API_URL_SYS_TERMINALS = '/api/mchTerminals'

/** 用户绑定门店列表 */
export const API_URL_USER_BIND_STORE_LIST = '/api/mchStore/userStoreRelas'

/** 商户支付通道列表 */
export const API_URL_PAY_PASSAGE_LIST = '/api/mch/payPassages'
/** 广告列表 */
export const API_URI_PAY_AD_LIST = '/api/advert'
/** 如意门店操作 */
export const API_URI_DEV_RUYI = '/api/alipayShop'

/** 会员管理 */
export const API_URL_MEMBERS = '/api/member'

/** 会员充值记录 */
export const API_URL_MEMBER_RECHARGE_RECORDS = '/api/member/rechargeRecord'

/** 会员充值规则管理 */
export const API_URL_MEMBER_RECHARGE_RULES = '/api/member/rechargeRule'

/** 会员账户流水 */
export const API_URL_MEMBER_ACCOUNT_HISTORY = '/api/member/accountHistory'

//营销红包开始

//红包规则
export const API_URL_MCH_REF_PACKET_RULE_LIST = '/api/redPacketRule'
//新增红包规则
export const API_URL_MCH_REF_PACKET_RULE_ADD = '/api/redPacketRule'

//顾客统计
export const API_URL_MCH_REF_PACKET_RULE_COUNT = '/api/redPacketUser/count'
//顾客列表
export const API_URL_MCH_REF_PACKET_USER_LIST = '/api/redPacketUser'
//顾客红包
export const API_URL_MCH_REF_PACKET_INFO_LIST = '/api/redPacketInfo'
//红包查询规则详情
export const API_URL_MCH_REF_PACKET_RULE_QUERY = '/api/redPacketRule'
//红包修改规则
export const API_URL_MCH_REF_PACKET_RULE_EDIT = '/api/redPacketRule/edit'
//红包余额变动明细列表
export const API_URL_MCH_REF_PACKET_CHANGE = '/api/redPacketChange'
//渠道列表
export const API_URL_MCH_ISV_LIST = '/api/isvInfo/isvInfoList'



/* 密码登录 */
export function $loginByPwd(username, pwd, safetyCode) {
	// 登录类型
	let lt = ''
	// #ifdef APP-PLUS
	lt = Base64.encode('APP')
	// #endif
	// #ifdef H5 || MP-WEIXIN
	lt = Base64.encode('LITE')
	// #endif

	let data = {
		ia: Base64.encode(username),
		ip: Base64.encode(pwd),
		mc: safetyCode ? Base64.encode(safetyCode) : null,
		lt: lt,
	}
	return http.req('/api/anon/auth/validate', data, 'POST')
}

/* 验证码登录 */
export function $phoneCodeLogin(phone, code) {
	// 登录类型
	let lt = ''
	// #ifdef APP-PLUS
	lt = Base64.encode('APP')
	// #endif
	// #ifdef H5 || MP-WEIXIN
	lt = Base64.encode('LITE')
	// #endif

	let data = {
		phone: Base64.encode(phone),
		code: Base64.encode(code),
		lt: lt,
	}

	return http.req('/api/anon/auth/phoneCode', data, 'POST')
}

// 找回密码
export function $retrieve({
	phone,
	code,
	newPwd
}) {
	let data = {
		phone: Base64.encode(phone),
		code: Base64.encode(code),
		newPwd: newPwd ? Base64.encode(newPwd) : ''
	}
	return http.req('/api/anon/cipher/retrieve', data, 'POST')
}

/* 修改密码 */
export function $modifyPwd({
	originalPwd,
	confirmPwd
}) {
	let data = {
		originalPwd: Base64.encode(originalPwd),
		confirmPwd: Base64.encode(confirmPwd)
	}
	return http.req("/api/current/modifyPwd", data, "PUT")
}

/* 注册新商户 */
export function $mchRegister({
	mchName,
	confirmPwd,
	inviteCode,
	phone,
	code
}) {
	let data = {
		mchName: mchName, // 用户名称
		confirmPwd: Base64.encode(confirmPwd), // 确认密码
		inviteCode, // 邀请码
		phone: Base64.encode(phone), // 手机号
		code: Base64.encode(code), // 短信验证码
	}
	return http.req('/api/anon/register/mchRegister', data, 'POST')
}

/* 发送短信验证码 */
export function $sendSms(data, smsType) {
	return http.req('/api/anon/sms/code', {
		phone: data.phone,
		vercode: data.vercode,
		vercodeToken: data.vercodeToken,
		smsType: smsType
	}, 'POST')
}

/* 获取个人信息 */
export function $userInfo(cid1, cid2) {
	return http.req('/api/current/user', {
		cid1,
		cid2
	}, 'GET')
}

/* 获取公司信息 */
export function $getSiteInfos() {
	return http.req('/api/anon/siteInfos', {}, 'GET')
}

// 隐私政策与服务协议
export function $getTreaty() {
	return http.req('/api/anon/treaty', {}, 'GET')
}

/* 快捷收银 */
export function $appPay(storeId, amount, sellerRemark, wayCode, authCode) {
	let data = {
		storeId,
		amount,
		sellerRemark,
		wayCode,
		authCode
	}

	// 二维码， 返回结果为 图片地址
	if (wayCode == 'QR_CASHIER') {
		data.payDataType = 'codeImgUrl'
	}

	return http.req('/api/pay/app', data, 'POST')
}

/* 当前商户信息 */
export function $getMchInfo() {
	return http.req('/api/mainChart', {}, 'GET')
}

/* 订单打印 */
export function $payOrderPrint(orderId) {
	return http.req('/api/payOrder/print/' + orderId, {}, 'GET')
}

/* 订单退款 */
export function $payOrderRefund(orderId, refundAmount, refundReason, refundPassword) {
	return http.req(
		'/api/payOrder/refunds/' + orderId, {
			refundAmount: refundAmount,
			refundReason: refundReason,
			refundPassword: Base64.encode(refundPassword),
			refundModel: 1
		},
		'POST'
	)
}
// // 首页统计信息
// export function $indexStatistics (queryDateRange) {
//   return http.req('/api/mainChart/payDayCount', { queryDateRange }, 'GET')
// }

// 首页统计信息
export function $indexStatistics(queryDateRange) {
	return http.req('/api/payOrder/count?queryDateRange', {
		queryDateRange
	}, 'GET')
}

// 统计报表
export function $getStatInfo(data) {
	return http.req('/api/statistic/total', data, 'GET', false)
}
//  统计报表设备 门店 支付方式统计
export function $getStatistic(data) {
	return http.req('/api/statistic', data, 'GET')
}

/* 经纬度转换为areacode */
export function $location2areacode(location) {
	return http.req('/api/mchStore/location2areacode/', {
		location: location
	}, 'GET')
}


/* 获取上传form信息 */
export function $ossFilesForm(bizType, file) {
	let postData = {
		bizType: bizType,
		sourceFileName: file.name || file.path, // 如果没有name 则使用pach替换
		sourceFileSize: file.size,
	}

	return http.req('/api/ossFiles/form', postData, 'POST')
}

/* 系统设置 */
// 获取语音播报开关信息
export function $mchConfig(groupKey) {
	return http.req('/api/mchConfig', {
		groupKey: groupKey
	}, 'GET')
}
// 修改语音播报开关信息
export function $orderConfig(configData, mchNo) {
	console.log('mchNo', mchNo);
	return http.req('/api/mchConfig/orderConfig', {
		configData: configData,
		mchNo: mchNo
	}, 'PUT')
}

/* 修改个人信息 */
export function $modifyUser({
	realname,
	avatarUrl
}) {
	return http.req("/api/current/user", {
		realname,
		avatarUrl
	}, "PUT")
}

/* 获取密码规则 */
export function $getPasswordRules() {
	return http.req("/api/anon/cipher/pwdRulesRegexp", "GET")
}

// 验证是否有密码
export function $isSipw() {
	return http.req("/api/mchConfig/hasSipwValidate", "GET")
}

// 验证原支付密码是否正确
export function $isMchSipw(originalPwd) {
	return http.req("/api/mchConfig/mchSipwValidate", {
		originalPwd: Base64.encode(originalPwd)
	}, "POST")
}

/* 更新支付密码 */
export function $updateMchSipw({
	originalPwd,
	confirmPwd
}) {
	let data = {
		originalPwd: Base64.encode(originalPwd),
		confirmPwd: Base64.encode(confirmPwd)
	}
	return http.req("/api/mchConfig/mchSipw", data, "PUT")
}

/* 版本检测 */
export function $versionDetection({
	versionNumber
}) {
	return http.req("/api/anon/clientVersion/versionInfo", {
		versionNumber: versionNumber
	}, "GET")
}

/* 查询用户权限 */
export function $getUserEntRoles(sysUserId) {
	return http.req("/api/sysUsers/userEntRoles/" + sysUserId, {}, "GET")
}

/* 更新用户权限 */
export function $updateUserEntRoles(sysUserId, ruleName, state) {
	return http.req("/api/sysUsers/userEntRoles/" + sysUserId, {
		ruleName,
		state
	}, "PUT")
}


/*  根据支付方式查询可配置的支付接口  */
export function $getAvailablePayInterface(appId, wayCode) {
	return http.req(`/api/mch/payPassages/availablePayInterface/${appId}/${wayCode}`, "GET")
}

/*  支付方式配置支付接口   */
export function $wayCodeConfigIfCode(appId, wayCode, ifCode) {

	let reqData = {
		appId: appId,
		wayCode: wayCode,
		ifCode: ifCode,
		state: 1
	}
	return http.req(`/api/mch/payPassages/mchPassage`, reqData, "POST")
}
/*码牌扫码 二维码解析*/
export function $parseQrCodeUrl(qrUrl) {
	return http.req('/api/mchQrCodes/parseQrCodeUrl', {
		qrUrl
	}, 'GET')
}
/*码牌绑定*/
export function $bindEmptyQR(qrcInfo) {
	return http.req('/api/mchQrCodes/bindEmptyQR', qrcInfo, 'POST')
}
/*解绑码牌*/
export function $unBindQrc(qrcId) {
	return http.req('/api/mchQrCodes/unbind/' + qrcId, {}, 'POST')
}
/*码牌查询受支持的云喇叭设备*/
export function $getHornList(qrcId) {
	return http.req('/api/mchQrCodes/bindDevice/' + qrcId, 'GET')
}
/*  更新默认 */
export function $updateTrmDefault(trmId, defaultFlag) {
	return http.req('/api/mchTerminals/trmDefaults', {
		trmId,
		defaultFlag
	}, 'PUT')
}

/*  设备解绑 */
export function $deviceUnbind(deviceId) {
	return http.req('/api/store/device/unbind/' + deviceId, {}, 'POST')
}


/*  渠道报备列表 */
export function $terminalChannelBindList(trmId) {
	return http.req('/api/mchTerminals/channelBindInfos/' + trmId, {}, 'GET')
}

/*  渠道报备 */
export function $terminalChannelBindSend(trmId, ifCode) {
	return http.req('/api/mchTerminals/channelSendup/' + trmId, {
		ifCode: ifCode,
		state: 1
	}, 'POST')
}


// 扫码登录
export function $scanCodeLogin(qrcodeNo, qrcodeStatus) {
	return http.req("/api/current/qrcode/login", {
		qrcodeNo,
		qrcodeStatus
	}, "POST")
}

// 云喇叭 播报测试
export function $speakTest(devId, amount) {
	return http.req("/api/store/device/speak/" + devId, amount, "POST")
}

// 云打印 打印测试
export function $printTest(devId, amount) {
	return http.req(`/api/store/device/print/${devId}`, {
		amount
	}, "POST")
}

/* 获取百度语音播报token */
export function $getBaiduToken() {
	return http.req("/api/pushinfo/getBaiduToken", {}, "GET")
}
// 获取通知接收人二维码图片
export function $getWxMpInfo() {
	return http.req("/api/wxmp/getWxmpInfo", {}, "GET")
}

/* 获取进件通道列表 */
export function $getAllAllowApplymentIfCodeList() {
	return http.req("/api/payConfig/ifCodes", {
		infoId: 'CURRENT',
		configMode: 'mchApplyment'
	}, "GET")
}
/* 查询店长可以绑定的门店 */
export function $getBindStoreList(params) {
	return http.req('/api/mchStore/bindStoreList', params, "GET")
}

/* 提交unipush cid */
export function $pushInfoRegister(data) {
	console.log('push cid', data);
	return http.req("/api/pushinfo/register", data, "POST")
}
/* 获取广告接口*/
export function $adList(params) {
	return http.req('/api/advert/appAdvert', params, 'GET')
}
/** 如意Lite 绑定解绑接口 */
export function $BindLite(data) {
	return http.req('/api/alipayIot/bind/' + data.deviceId, data, "POST")
}

// 获取支付宝扫码授权
export function $aliPayQrCodeOrApply(account = '', type = 'queryResult') {
	return http.req(`/api/alipaySpOperation/${type}`, {
		alipayAccount: account
	}, type == 'apply' ? 'POST' : 'GET')
}
// 获取支付宝授权信息
export function $aliAccountInfo() {
	return http.req('/api/alipaySpOperation/authInfo', {}, 'GET')
}

// 查询蚂蚁店铺状态
export function $queryAliStore(storeId) {
	return req.getById('/api/alipayShop/createResult', storeId)
}


// 获取上传图片 大小
export function $getUploadImgSize() {
	return http.req('/api/defaultConfig', {}, "GET")
}

// 会员调账
export function $memberManual(params) {
	return http.req('/api/member/manual/' + params.memberId, params, "POST")
}

//查询或修改会员配置信息 
export function $findOrEditMemberConfig(data, mode = 'GET', uri = '') {
	return http.req('/api/mchConfig' + uri, data, mode)
}
/* 会员数据统计 */
export function $memberInfoCount(params) {
	return http.req('/api/member/count', params, 'GET')
}

/* 查询商户支付应用 费率参数是否配置 */
export function $getMchPayPassage(appId, ifCode) {
	return http.req(`/api/payConfig/existPayParams/${appId}/${ifCode}`, {}, 'GET')
}

/* 获取进件渠道列表 */
export function $getAllIsvInfoList(ifCode, range = 0) {
	return http.req("/api/isvInfo/isvInfoList", {
		pageNumber: "-1",
		range: range,
		ifCode: ifCode
	}, "GET")
}


// 请求验证码
export function $isCode() {
	return http.req("/api/anon/auth/vercode", "GET")
}

export function $pmdfb(data) {
	return http.req("/api/store/device/setMarqueeInfo", data, "POST")
}

export function $getImgWH(params) {
	return http.req(`/api/store/device/getMarketPoint/${params}`, "GET")
}

export function $initializeImg(params) {
	return http.req(`/api/store/device/getMarketPic/${params}`, "GET")
}

export function $uploadImg(data) {
	return http.req(`/api/store/device/setMarketPic`, data, "POST")
}

/* 获取上传form信息 */
export function $NewOssFilesForm(data) {
	return http.req("/api/ossFiles/form", data, "POST")
}