|
@@ -1,299 +1,300 @@
|
|
|
-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'
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-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':
|
|
|
- {
|
|
|
- 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
|
|
|
- }
|
|
|
- } 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`,
|
|
|
- {
|
|
|
- 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
|
|
|
- } = 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
|
|
|
- try {
|
|
|
- orderDetailList.forEach(async (item: any) => {
|
|
|
- await formatOrderDetail(item, {
|
|
|
- couponAmount,
|
|
|
- discountPrice
|
|
|
- })
|
|
|
- })
|
|
|
- callBack && callBack()
|
|
|
- } catch {
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
+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'
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+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':
|
|
|
+ {
|
|
|
+ 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,
|
|
|
+ purchaseCycle: item.bizInfo?.bizValidTime || res.purchaseCycle
|
|
|
+ }
|
|
|
+ } 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`,
|
|
|
+ {
|
|
|
+ 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
|
|
|
+ } = 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
|
|
|
+ try {
|
|
|
+ orderDetailList.forEach(async (item: any) => {
|
|
|
+ await formatOrderDetail(item, {
|
|
|
+ couponAmount,
|
|
|
+ discountPrice
|
|
|
+ })
|
|
|
+ })
|
|
|
+ callBack && callBack()
|
|
|
+ } catch {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|