import { http, httpGet, httpPost, httpPut } from '../../utils/http' import { Schedule } from '../models/schedule' import { Category, Content, DictType, MaterialDealer, MaterialDealerDetail, MaterialDealerHomePage, MaterialDealerRes, Moment, Comment, Activity, BannerMode, Banner, StudyTour, } from '../models/moment' import dayjs from 'dayjs' export const getUserInfo = () => httpGetMock({ avatar: 'https://via.placeholder.com/21x21', nickname: '苏小萌', }) export const getSchedule = () => httpGetMock({ name: '东京艺术设计研习营', cover: 'https://via.placeholder.com/375x297', items: [ { title: '早稻田大学课程', time: '9:00', content: '是位于日本东京都新宿区的一所著名的私立大学。它由早稻田大学的创始人大隈重信于1882年创立,是日本超级国际化大学计划(Top Global University Project)选定的大学之一,也是日本顶尖的高等教育机构之一。', momentExample: 'https://via.placeholder.com/285x157', monentHint: '*说明:打卡地XX,收集上课素材', }, { title: '早稻田大学博物馆参观', time: '11:00', content: '早稻田大学拥有多座博物馆,‌其中最著名的是早稻田大学历史馆。‌早稻田大学历史馆收藏、‌展示着著名校友在运动方面的杰出表现和成就,‌馆内的解说牌以日语和英语标示,‌展现了传统样式风格的建筑。', momentExample: 'https://via.placeholder.com/285x157', monentHint: '*说明:打卡地XX,收集上课素材', }, ], }) export const getMoment = () => httpGetMock({ author: { avatar: 'https://via.placeholder.com/35x35', nickname: '苏小萌', level: '0', }, content: '用心做好设计,为客户创造美好家居环境', images: [ 'https://via.placeholder.com/165x220', 'https://via.placeholder.com/220x220', 'https://via.placeholder.com/165x220', ], tags: ['意大利游学设计班'], shares: 0, comments: 0, likes: 0, createdAt: dayjs('2024-07-15').toDate(), commentList: [], }) export const getClassmates = () => httpGetMock([ { avatar: 'https://via.placeholder.com/35x35', nickname: '苏小萌', level: '0', }, { avatar: 'https://via.placeholder.com/35x35', nickname: '苏小萌', level: '0', }, { avatar: 'https://via.placeholder.com/35x35', }, ]) export const getClassmate = () => httpGetMock({ title: '2023同学荟|清华空间环境艺术设计研修班 阔步向未来', author: { avatar: 'https://via.placeholder.com/35x35', nickname: '苏小萌', level: '0', }, viewNum: 125, createdAt: dayjs('2024-07-15').toDate(), content: '
111111
', }) export const getMaterialDealers = () => httpGetMock([ { name: 'IMOLA瓷砖', icon: 'https://via.placeholder.com/78x78', brandType: '进口品牌', type: '瓷砖', views: 1000, createdAt: dayjs('2024-07-15').toDate(), }, { name: 'IMOLA瓷砖', icon: 'https://via.placeholder.com/78x78', brandType: '进口品牌', type: '瓷砖', views: 1000, createdAt: dayjs('2024-07-15').toDate(), }, ]) export const weixinMiniAppLogin = (phoneCode: string, loginCode: string, state: string) => httpPost('/app-api/member/auth/weixin-mini-app-login', { phoneCode, loginCode, state, }) export const getMemberUserInfo = () => httpGet('/app-api/member/user/get') export const updateMemberUserInfo = (data = {}) => httpPut('/app-api/member/user/update', data) export const getByDictType = ( type: string | 'member_channel_source' | 'member_spatial_expertise_type' | DictType, ) => httpGet< { label: string value: string dictType: string status: number }[] >('/app-api/system/dict-data/type', { type }) export const validateReferrerCode = (data: { code: string }) => httpPost('/app-api/member/user-auth-info/referrer-validate-code', {}, data) export const createUserAuthInfo = ( data: Partial<{ id: number userId: number designerName: string gender: number mobile: string channelSource: number referrer: string employer: string spatialExpertiseType: number attachment: string auditStatus: number remark: string }>, ) => httpPost('/app-api/member/user-auth-info/create', data) /** * 获取设计师审核 */ export const getUserAuthInfo = () => httpPost('/app-api/member/user-auth-info/get') export const getCircles = (query: { tagName?: string; circleType?: string; stylistId?: string }) => httpGet<{ list: { id: number headUrl?: string stylistId?: number stylistName?: string marketing?: string circleDesc?: string tagName?: string detailsType?: string detailsUrl?: string detailsDesc?: string circleType?: string spaceType?: string designStyle?: string spaceAddr?: string customerDemand?: string createTime: number bannerUrls: string[] shareCount?: number upvoteCount?: number ownUpvote: boolean reviewCount: number }[] }>('/app-api/member/circle/page', query) export const createCircle = (data: Partial) => httpPost('/app-api/member/circle/create', data) export const getCircle = (id: string) => httpGet>('/app-api/member/circle/get', { id }) export const shareCircle = (id: string) => httpGet('/app-api/member/circle/share', { id }) export const getCircleUpvotes = (id) => httpGet<{ total: number list: { id: number circleId: number userId: number upvpteTime: number createTime: number userName: string }[] }>('/app-api/member/circle-upvote/page', { circleId: id }) export const createCircleUpvote = (data: { circleId: number; userId: number; userName: string }) => httpPost('/app-api/member/circle-upvote/create', data) /** * 取消圈子点赞 */ export const cancelCircleUpvote = (query: { id: string }) => httpGet('/app-api/member/circle-upvote/delete', query) export const createCircleReview = ( data: Partial<{ circleId: string userId: string | number userName: string reviewContent: string replayReviewId: string }>, ) => httpPost('/app-api/member/circle-review/create', data) export const deleteCircleReview = (id) => httpGet('/app-api/member/circle-review/delete', { id }) export const getCircleReviews = (query: { circleId: string }) => httpGet<{ list: Comment[] }>('/app-api/member/circle-review/getCircleReviewByCircleId', query) export const createCircleReviewUpvote = (data: { circleId: number userId: number userName: string reviewId: number }) => httpPost('/app-api/member/circle-review-upvote/create', data) export const cancelCircleReviewUpvote = (query: { circleId: string userId: string reviewId: string }) => httpGet('/app-api/member/circle-review-upvote/cancel', query) export const getCircleReviewUpvotes = (query: { circleId: string; reviewId?: string }) => httpGet('/app-api/member/circle-review-upvote/page', query) export const getReviewReplay = (query: { id: string }) => httpGet('/app-api/member/circle-review/getReviewReplay', query) export const getTasks = (query) => httpGet<{ list: { id: number taskKey: string taskValue: string createTime: string sort: number status: number }[] }>('/app-api/basicsetting/set-task-center/page', query) export const getCircleTags = (query) => httpGet<{ list: { id: number labelName: string labelType: number usageCount: number creator: string createTime: number }[] }>('/app-api/basicsetting/set-label/page', query) export const getSetIndexConfigs = (query = {}) => httpGet<{ list: { id: number name: string indexPromotionalVideoImage: string coverVideoImage: string sort: number playCount: number status: number createTime: string }[] }>('/app-api/basicsetting/set-index-config/page', query) /** * 获取材料商列表 * @param query {{brandLevel: '1'|'2'}} * @returns {Promise<*>} */ export const getMaterials = (query = {}) => httpGet<{ list: MaterialDealer[] }>('/app-api/member/materials/page', query) export const getAppMaterials = () => httpGet('/app-api/member/materials/appMaterialsList') export const getAppMaterial = (id: number) => httpGet('/app-api/member/materials/queryHomePage', { materialsId: id }) export const getMaterialHomePage = (id: number) => httpGet>('/app-api/member/materials/queryHomePage', { materialsId: id, }) export const getMaterialDetail = (query: { id: string }) => httpGet('/app-api/member/materials/getDetail', query) export const createMaterialsReferrer = (data) => httpPost('/app-api/member/materials-referrer/create', data) export const getContents = (query: { contentType?: '1' | '2' | '3' contentCategory?: string pageSize?: string }) => httpGet<{ list: Content[] }>('/app-api/member/content-manger/page', query) export const getAllCategories = () => httpGet('/app-api/member/categories/getAllCategories') export const getContent = (query: { id: string }) => httpGet('/app-api/member/content-manger/get', query) export const getProductCategories = () => httpGet('/app-api/member/product-type/getAllProductCategories', {}) export const getProducts = (query: { oneCategory?: string; secondCategory?: string }) => httpPost<{ list: { prodcutName: string productId: string needPoints: number points: number productPrice: string productCoverImgUrl: string productDetailsImgUrl: string contentDesc: string productType: string oneCategory: any secondCategory: string }[] }>('/app-api/member/product/page', {}, query) export const getProduct = (id: string) => httpGet<{ id: number prodcutName: string productId: string oneCategory: any oneCategoryName: any secondCategory: string secondCategoryName: any isRestrict: number productRepertory: any productPrice: string productType: number vendorId: any vendorName: string needPoints: number points: number gainType: number exchangeDesc: string productCoverImgUrl: string productDetailsImgUrl: string contentDesc: string status: number exchangeCount: any memberLevelId: any memberLevelName: any favourablePoints: any favourableEndDate: any createTime: number updateTime: number }>('/app-api/member/product/detail', { productId: id }) export const getProductItemBuy = (query: { userId: number }) => httpPost<{ list: Partial<{ productId: string prodcutName: string oneCategory: any secondCategory: string isRestrict: number productRepertory: any productPrice: string productType: string vendorId: any vendorName: string needPoints: number points?: number gainType: number exchangeDesc: any productCoverImgUrl: string productDetailsImgUrl: string contentDesc: string status: number exchangeCount: any memberLevelId: any memberLevelName: any favourablePoints?: number favourableEndDate?: number favourableStatus: number count: number createTime: any }>[] total: number }>('/app-api/member/product-item-buy/select', query) /** * 商品添加到购物车 */ export const createProductItemBuy = (data: { doList: { createTime?: string updateTime?: string creator?: string updater?: string deleted?: boolean id?: number productId?: string userId?: number points: number nums: number }[] }) => httpPost('/app-api/member/product-item-buy/create', data) /** * 从购物车删除商品 */ export const deleteProductItemBuy = (data: { doList: { createTime?: string updateTime?: string creator?: string updater?: string deleted?: boolean id?: number productId?: string userId?: number }[] }) => httpPost('/app-api/member/product-item-buy/delete', data) /** * 商城下单 */ export const productPlacing = (data: { isShoppingCart: number userId: number list: { orderNo?: string productId?: string points?: number nums?: number productName: string orderImgUrl: string }[] couponList: { couponId: number brandPoints: number }[] totalsPoints?: number totalsCouponPoints?: number totalsCurrPoints?: number }) => httpPost('/app-api/member/points-order/placing', data) /** * 订单结算 */ export const orderPay = (data: { isShoppingCart: number userId: number list: { orderNo?: string productId?: string points?: number nums?: number }[] couponList: { couponId: number brandPoints: number }[] totalsPoints?: number totalsCouponPoints?: number totalsCurrPoints?: number }) => httpPost(`/app-api/member/points-order/placingPay`, data) export const getPointsOrders = (query) => httpGet<{ list: { id: number materialsId: any materialsBrand: any stylistId: number orderMoney: any projectName: string pointsRate: any points: string orderImgUrl?: string orderStatus: string verifyTime: any completeTime?: number turnDownTime: any cancelTime: number cancelReason: any turnDownReason: any remark: any couponId: any orderNo: string createTime: number brokerageRate: any brokerage: any }[] total: number }>('/app-api/member/points-order/page', query) export const getActivities = (query) => httpGet<{ list: Activity[] }>('/app-api/member/activity/page', query) export const getActivity = (id: string) => httpGet>('/app-api/member/activity/get', { id }) export const activitySignup = (data: { id: number }) => httpPost('/app-api/member/activity/signup', data) /** * 获取活动报名列表 */ export const getActivitySignups = (query: { activityId: string }) => httpGet<{ list: { id: number activityId: number userId: number applyTime: number applyType: number applyStatus: number applyPoints: any isJoin: string createTime: number name: string headImgUrl: string mobile: string brokerId: any brokerName: string memberLevelId: number memberLevelName: any }[] total: number }>('/app-api/member/activity/signup/page', query) /** * 获取游学列表 */ export const getStudyTours = (query) => httpGet<{ list: StudyTour[]; total: number }>('/app-api/member/app-study-abroad/page', query) /** * 获取游学详情 */ export const getStudyTour = (id: string) => httpGet('/app-api/member/app-study-abroad/get', { id }) /** * 游学报名 */ export const studyTourSignup = (data: { id: number }) => httpPost('/app-api/member/app-study-abroad/signup', data) /** * 获取游学报名列表 */ export const getStudyTourSignups = (query: { studyId: string }) => httpGet<{ list: { id: number activityId: number userId: number applyTime: number applyType: number applyStatus: number applyPoints: any isJoin: string createTime: number name: string headImgUrl: string mobile: string brokerId: any brokerName: string memberLevelId: number memberLevelName: any }[] total: number }>('/app-api/member/app-study-abroad/signup/page', query) /** * 获取Banner列表 */ export const getBanners = (query: { mode: BannerMode }) => httpGet('/app-api/member/banner/get-by-mode', query) /** * 获取消息列表 */ export const getMessages = (query) => httpGet('/app-api/member/message-manage/page', query) /** * 获取Banner */ export const getBanner = (id) => httpGet('/app-api/member/banner/get-by-id', { id }) /** * 获取积分明细列表 */ export const getPoints = (query) => httpGet<{ list: { id: number pointsType: string typeName: string pointsCategory: string categoryName: string sourceId: number name: string pointsStauts: string points: number orderMoney: string materialsId: number materialsBrand: string stylistId: number brokerId: number stylistName: string brokerName: string generateTime: string verifyTime: string completeTime: string turnDownTime: string cancelTime: string cancelReason: string turnDownReason: string remark: string couponId: number orderNo: string createTime: string }[] total: number }>(`/app-api/member/points-details/pageAllByYear/${query.year}`, query) /** * 获取会员等级列表 */ export const getMemberLevels = () => httpGet< { id: number memberLevel: number memberLevelName: string upgradeCriteria: number points: number retentionDaysCriteria: number retentionDays?: number memberBgImage: string associatedMemberRights: string associatedMemberRightsName: any status: number createTime: number }[] >('/app-api/basicsetting/set-member-level-config/list') /** * 获取设计师信息 */ export const getDesignerInfo = (userId) => httpGet< Partial<{ id: number userId: number brokerId: number brokerName: string status: string authTime: number points: number headImgUrl: string shareCount: number viewCount: number winCustomerCount: number serviceYears: string serviceCustomerCount: number designFee: string memberValidTime: number personalIdentity: string designDesc: string followFocus: string homePageUrl: string sharePageUrl: string retryStatus: number }> >('/app-api/member/designer/getDesignerInfo', { userId }) /** * 更新设计师信息 */ export const updateDesignerInfo = (data) => httpPost('/app-api/member/designer/updateDesignerInfo', data) /** * 预约设计师 */ export const reserveDesigner = (data: { stylistId: number stylistName: string appointmentName: string appointmentPhone: string }) => httpPost('/app-api/member/designer/reserveDesigner', data) /** * 通过ID获取用户信息 */ export const getUserInfoById = (id) => httpGet< Partial<{ mobile: string status: string nickname: string avatar: string name: string sex: string areaId: number areaName: string birthday: string mark: string tagIds: string levelId: number groupId: number id: number registerIp: string loginIp: string loginDate: string createTime: string point: number totalPoint: number tagNames: string levelName: string groupName: string experience: number }> >('/app-api/member/user/getByUserId', { id }) export const refreshToken = (refreshToken: string) => httpPost('/app-api/member/auth/refresh-token', {}, { refreshToken }) export const httpGetMock = (data: T) => new Promise>((resolve) => resolve({ code: 1, msg: '', data } as IResData)) export interface Circle { headUrl: string stylistId: string | number stylistName: string marketing: string circleDesc: string tagName: string detailsType: string detailsUrl: string detailsDesc: string circleType: string spaceType: string designStyle: string spaceAddr: string customerDemand: string bannerUrls: string[] } export interface CircleRes { id: number headUrl?: string stylistId?: number stylistName?: string marketing?: string circleDesc?: string tagName?: string detailsType?: string detailsUrl?: string detailsDesc?: string circleType?: string spaceType?: string designStyle?: string spaceAddr?: string customerDemand?: string createTime: number bannerUrls: string[] shareCount?: number upvoteCount?: number ownUpvote: boolean reviewCount: number }