123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- import { memberType } from '@/constant'
- import request from '@/helpers/request'
- import { state } from '@/state'
- import { orderStatus } from '@/views/order-detail/orderStatus'
- import dayjs from 'dayjs'
- const apiSuffix =
- state.platformType === 'STUDENT' ? '/api-student' : '/api-teacher'
- // LIVE: '直播课',
- // PRACTICE: '趣纠课',
- // VIDEO: '视频课',
- // VIP: '开通会员',
- // MUSIC: '单曲点播'
- interface IAmount {
- couponAmount: number
- discountPrice: number
- }
- export const formatOrderDetail = async (item: any, amount?: IAmount) => {
- const type = item.goodType
- let tempList: any = {}
- switch (type) {
- case 'LIVE': case "GROUP":
- {
- try {
- const live = await getLiveDetail(item.bizId)
- const courseInfo: any[] = []
- const coursePlanList = live.planList || []
- coursePlanList.forEach((item: any) => {
- const startTime = item.startTime || new Date()
- const endTime = item.endTime || new Date()
- courseInfo.push({
- courseTime: `${dayjs(startTime).format('YYYY-MM-DD')} ${dayjs(
- startTime
- ).format('HH:mm')}~${dayjs(endTime).format('HH:mm')}`,
- coursePlan: item.plan,
- id: item.courseId
- })
- })
- tempList = {
- orderType: item.goodType,
- goodName: item.goodName,
- courseGroupId: live.courseGroupId,
- courseGroupName: live.courseGroupName,
- coursePrice: live.coursePrice,
- teacherName: live.userName || `游客${live.teacherId || ''}`,
- teacherId: live.teacherId,
- avatar: live.avatar,
- courseInfo
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- }
- break
- case 'PRACTICE': {
- const bizContent: any = JSON.parse(item.bizContent)
- tempList = {
- ...bizContent,
- teacherName: item.username,
- starGrade: item.starGrade,
- avatar: item.avatar
- }
- break
- }
- case 'VIDEO': {
- try {
- const res = await getVideoDetail(item.bizId)
- const { lessonGroup, detailList } = res
- tempList = {
- orderType: item.goodType,
- goodName: item.goodName,
- courseGroupId: lessonGroup.id,
- courseGroupName: lessonGroup.lessonName,
- coursePrice: lessonGroup.lessonPrice,
- teacherName: lessonGroup.username,
- teacherId: lessonGroup.teacherId,
- avatar: lessonGroup.avatar,
- courseInfo: detailList
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- break
- }
- case 'VIP':
- {
- try {
- const res = await getVipDetail(item.id)
- tempList = {
- orderType: item.goodType,
- goodName: item.goodName,
- id: item.id,
- title: memberType[res.period] || '',
- // 判断是否有优惠金额
- price: amount?.couponAmount
- ? Number(
- (
- res.salePrice -
- amount.couponAmount +
- amount.discountPrice
- ).toFixed(2)
- )
- : res.salePrice || item.actualPrice,
- startTime: dayjs(res.startTime).format('YYYY-MM-DD'),
- endTime: dayjs(res.endTime).format('YYYY-MM-DD')
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- }
- break
- case 'MUSIC':
- {
- try {
- const res = await getMusicDetail(item.bizId)
- tempList = {
- orderType: item.goodType,
- goodName: item.goodName,
- ...res
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- }
- break
- case 'ALBUM':
- {
- try {
- const res = await getAlbumDetail(item.bizId)
- tempList = {
- orderType: item.goodType,
- goodName: item.goodName,
- ...res
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- }
- break
- case 'TENANT_ALBUM':
- {
- try {
- const res = await getTenantAlbumDetail(item.bizId)
- tempList = {
- orderType: item.goodType,
- goodName: item.goodName,
- ...res,
- purchaseNum: item.bizInfo?.bizValidTime || res.purchaseNum
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- }
- break
- case 'ACTI_REGIST':
- {
- try {
- const res = await getMusicActiveTrack(item.bizId)
- tempList = {
- orderType: item.goodType,
- goodsName: res.activityName,
- activityId: res.id,
- actualPrice: res.registrationPrice
- }
- } catch (e: any) {
- throw new Error(e.message)
- }
- }
- break
- }
- tempList.orderType = type
- tempList.goodName = item.goodName
- orderStatus.orderObject.orderList.push(tempList)
- }
- // 获取视频课详情
- export const getVideoDetail = async (groupId: any) => {
- try {
- const res = await request.get(
- `${apiSuffix}/videoLesson/selectVideoLesson`,
- {
- params: {
- groupId
- }
- }
- )
- return res.data
- } catch {
- throw new Error('获取视频课详情失败')
- }
- }
- // 获取直播课详情
- export const getLiveDetail = async (groupId: any) => {
- try {
- const res = await request.get(
- `${apiSuffix}/courseGroup/queryLiveCourseInfo`,
- {
- params: {
- groupId
- }
- }
- )
- return res.data
- } catch {
- throw new Error('获取直播课详情失败')
- }
- }
- // 获取会员详情
- export const getVipDetail = async (id: any) => {
- try {
- const setting = await request.get(`${apiSuffix}/vipCardRecord/detail/` + id)
- return setting.data || []
- } catch {
- throw new Error('获取会员详情失败')
- }
- }
- // 获取曲目详情
- export const getMusicDetail = async (id: any) => {
- try {
- const res = await request.get(`${apiSuffix}/music/sheet/detail/${id}`)
- return res.data
- } catch {
- throw new Error('获取曲目详情失败')
- }
- }
- // 活动列表
- // 获取曲目详情
- export const getMusicActiveTrack = async (id: any) => {
- try {
- const res = await request.post(`${apiSuffix}/open/activity/info/${id}`)
- return res.data
- } catch {
- throw new Error('获取曲目详情失败')
- }
- }
- // 获取专辑详情
- export const getAlbumDetail = async (id: any) => {
- try {
- const res = await request.post(`${apiSuffix}/music/album/detail`, {
- data: { id }
- })
- return res.data
- } catch {
- throw new Error('获取专辑详情失败')
- }
- }
- // 获取机构专辑详情
- export const getTenantAlbumDetail = async (id: any) => {
- try {
- const res = await request.post(
- `${apiSuffix}/userTenantAlbumRecord/detail`,
- {
- requestType: 'form',
- data: { albumId: id }
- }
- )
- return res.data
- } catch {
- throw new Error('获取机构专辑详情失败')
- }
- }
- // 为了处理继续支付逻辑
- export const tradeOrder = (result: any, callBack?: any) => {
- const {
- orderNo,
- actualPrice,
- orderDesc,
- orderName,
- orderType,
- orderDetailList,
- couponAmount, // 优惠金额
- discountPrice,
- paymentConfig, // v2 类型的订单才会用
- paymentVendor,
- paymentVersion
- } = result
- orderStatus.orderObject.orderType = orderType
- orderStatus.orderObject.orderName = orderName
- orderStatus.orderObject.orderDesc = orderDesc
- orderStatus.orderObject.actualPrice = actualPrice
- orderStatus.orderObject.orderNo = orderNo
- orderStatus.orderObject.discountPrice = discountPrice
- orderStatus.orderObject.orderList = []
- orderStatus.orderObject.paymentConfig = {
- ...paymentConfig,
- paymentVendor,
- paymentVersion
- }
- try {
- orderDetailList.forEach(async (item: any) => {
- await formatOrderDetail(item, {
- couponAmount,
- discountPrice
- })
- })
- callBack && callBack()
- } catch {
- //
- }
- }
|