requests.ts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. import { httpGet, httpPost, httpPut } from '../../utils/http'
  2. import { Schedule } from '../models/schedule'
  3. import {
  4. Category,
  5. Content,
  6. DictType,
  7. MaterialDealer,
  8. MaterialDealerDetail,
  9. MaterialDealerHomePage,
  10. MaterialDealerRes,
  11. Moment,
  12. Comment,
  13. Activity,
  14. BannerMode,
  15. Banner,
  16. } from '../models/moment'
  17. import dayjs from 'dayjs'
  18. export const getUserInfo = () =>
  19. httpGetMock<any>({
  20. avatar: 'https://via.placeholder.com/21x21',
  21. nickname: '苏小萌',
  22. })
  23. export const getSchedule = () =>
  24. httpGetMock<Schedule>({
  25. name: '东京艺术设计研习营',
  26. cover: 'https://via.placeholder.com/375x297',
  27. items: [
  28. {
  29. title: '早稻田大学课程',
  30. time: '9:00',
  31. content:
  32. '是位于日本东京都新宿区的一所著名的私立大学。它由早稻田大学的创始人大隈重信于1882年创立,是日本超级国际化大学计划(Top Global University Project)选定的大学之一,也是日本顶尖的高等教育机构之一。',
  33. momentExample: 'https://via.placeholder.com/285x157',
  34. monentHint: '*说明:打卡地XX,收集上课素材',
  35. },
  36. {
  37. title: '早稻田大学博物馆参观',
  38. time: '11:00',
  39. content:
  40. '早稻田大学拥有多座博物馆,‌其中最著名的是早稻田大学历史馆。‌早稻田大学历史馆收藏、‌展示着著名校友在运动方面的杰出表现和成就,‌馆内的解说牌以日语和英语标示,‌展现了传统样式风格的建筑。',
  41. momentExample: 'https://via.placeholder.com/285x157',
  42. monentHint: '*说明:打卡地XX,收集上课素材',
  43. },
  44. ],
  45. })
  46. export const getMoment = () =>
  47. httpGetMock<Moment>({
  48. author: {
  49. avatar: 'https://via.placeholder.com/35x35',
  50. nickname: '苏小萌',
  51. level: '0',
  52. },
  53. content: '用心做好设计,为客户创造美好家居环境',
  54. images: [
  55. 'https://via.placeholder.com/165x220',
  56. 'https://via.placeholder.com/220x220',
  57. 'https://via.placeholder.com/165x220',
  58. ],
  59. tags: ['意大利游学设计班'],
  60. shares: 0,
  61. comments: 0,
  62. likes: 0,
  63. createdAt: dayjs('2024-07-15').toDate(),
  64. commentList: [],
  65. })
  66. export const getClassmates = () =>
  67. httpGetMock<any[]>([
  68. {
  69. avatar: 'https://via.placeholder.com/35x35',
  70. nickname: '苏小萌',
  71. level: '0',
  72. },
  73. {
  74. avatar: 'https://via.placeholder.com/35x35',
  75. nickname: '苏小萌',
  76. level: '0',
  77. },
  78. {
  79. avatar: 'https://via.placeholder.com/35x35',
  80. },
  81. ])
  82. export const getClassmate = () =>
  83. httpGetMock<any>({
  84. title: '2023同学荟|清华空间环境艺术设计研修班 阔步向未来',
  85. author: {
  86. avatar: 'https://via.placeholder.com/35x35',
  87. nickname: '苏小萌',
  88. level: '0',
  89. },
  90. viewNum: 125,
  91. createdAt: dayjs('2024-07-15').toDate(),
  92. content: '<div>111111</div>',
  93. })
  94. export const getStudyTours = () =>
  95. httpGetMock<any[]>([
  96. {
  97. title: '东京艺术大学设计游学',
  98. createdAt: dayjs('2024-07-15').toDate(),
  99. startedAt: dayjs('2024-07-15').toDate(),
  100. endedAt: dayjs('2024-08-15').toDate(),
  101. amount: 16000,
  102. },
  103. ])
  104. export const getMaterialDealers = () =>
  105. httpGetMock<any[]>([
  106. {
  107. name: 'IMOLA瓷砖',
  108. icon: 'https://via.placeholder.com/78x78',
  109. brandType: '进口品牌',
  110. type: '瓷砖',
  111. views: 1000,
  112. createdAt: dayjs('2024-07-15').toDate(),
  113. },
  114. {
  115. name: 'IMOLA瓷砖',
  116. icon: 'https://via.placeholder.com/78x78',
  117. brandType: '进口品牌',
  118. type: '瓷砖',
  119. views: 1000,
  120. createdAt: dayjs('2024-07-15').toDate(),
  121. },
  122. ])
  123. export const weixinMiniAppLogin = (phoneCode: string, loginCode: string, state: string) =>
  124. httpPost<any>('/app-api/member/auth/weixin-mini-app-login', {
  125. phoneCode,
  126. loginCode,
  127. state,
  128. })
  129. export const getMemberUserInfo = () => httpGet<any>('/app-api/member/user/get')
  130. export const updateMemberUserInfo = (data = {}) => httpPut<any>('/app-api/member/user/update', data)
  131. export const getByDictType = (
  132. type: string | 'member_channel_source' | 'member_spatial_expertise_type' | DictType,
  133. ) =>
  134. httpGet<
  135. {
  136. label: string
  137. value: string
  138. dictType: string
  139. status: number
  140. }[]
  141. >('/app-api/system/dict-data/type', { type })
  142. export const validateReferrerCode = (data: { code: string }) =>
  143. httpPost('/app-api/member/user-auth-info/referrer-validate-code', {}, data)
  144. export const createUserAuthInfo = (
  145. data: Partial<{
  146. id: number
  147. userId: number
  148. designerName: string
  149. gender: number
  150. mobile: string
  151. channelSource: number
  152. referrer: string
  153. employer: string
  154. spatialExpertiseType: number
  155. attachment: string
  156. auditStatus: number
  157. remark: string
  158. }>,
  159. ) => httpPost<any>('/app-api/member/user-auth-info/create', data)
  160. export const getCircles = (query: { tagName?: string; circleType?: string; stylistId?: string }) =>
  161. httpGet<{
  162. list: {
  163. id: number
  164. headUrl?: string
  165. stylistId?: number
  166. stylistName?: string
  167. marketing?: string
  168. circleDesc?: string
  169. tagName?: string
  170. detailsType?: string
  171. detailsUrl?: string
  172. detailsDesc?: string
  173. circleType?: string
  174. spaceType?: string
  175. designStyle?: string
  176. spaceAddr?: string
  177. customerDemand?: string
  178. createTime: number
  179. bannerUrls: string[]
  180. shareCount?: number
  181. upvoteCount?: number
  182. ownUpvote: boolean
  183. reviewCount: number
  184. }[]
  185. }>('/app-api/member/circle/page', query)
  186. export const createCircle = (data: Partial<Circle>) =>
  187. httpPost<any>('/app-api/member/circle/create', data)
  188. export const getCircle = (id: string) =>
  189. httpGet<Partial<CircleRes>>('/app-api/member/circle/get', { id })
  190. export const shareCircle = (id: string) => httpGet('/app-api/member/circle/share', { id })
  191. export const getCircleUpvotes = (id) =>
  192. httpGet<{
  193. total: number
  194. list: {
  195. id: number
  196. circleId: number
  197. userId: number
  198. upvpteTime: number
  199. createTime: number
  200. userName: string
  201. }[]
  202. }>('/app-api/member/circle-upvote/page', { circleId: id })
  203. export const createCircleUpvote = (data: { circleId: number; userId: number; userName: string }) =>
  204. httpPost('/app-api/member/circle-upvote/create', data)
  205. /**
  206. * 取消圈子点赞
  207. */
  208. export const cancelCircleUpvote = (query: { id: string }) =>
  209. httpGet('/app-api/member/circle-upvote/delete', query)
  210. export const createCircleReview = (
  211. data: Partial<{
  212. circleId: string
  213. userId: string | number
  214. userName: string
  215. reviewContent: string
  216. replayReviewId: string
  217. }>,
  218. ) => httpPost<any>('/app-api/member/circle-review/create', data)
  219. export const deleteCircleReview = (id) => httpGet('/app-api/member/circle-review/delete', { id })
  220. export const getCircleReviews = (query: { circleId: string }) =>
  221. httpGet<{
  222. list: Comment[]
  223. }>('/app-api/member/circle-review/getCircleReviewByCircleId', query)
  224. export const createCircleReviewUpvote = (data: {
  225. circleId: number
  226. userId: number
  227. userName: string
  228. reviewId: number
  229. }) => httpPost('/app-api/member/circle-review-upvote/create', data)
  230. export const cancelCircleReviewUpvote = (query: {
  231. circleId: string
  232. userId: string
  233. reviewId: string
  234. }) => httpGet('/app-api/member/circle-review-upvote/cancel', query)
  235. export const getCircleReviewUpvotes = (query: { circleId: string; reviewId?: string }) =>
  236. httpGet('/app-api/member/circle-review-upvote/page', query)
  237. export const getReviewReplay = (query: { id: string }) =>
  238. httpGet('/app-api/member/circle-review/getReviewReplay', query)
  239. export const getTasks = (query) =>
  240. httpGet<{
  241. list: {
  242. id: number
  243. taskKey: string
  244. taskValue: string
  245. createTime: string
  246. sort: number
  247. status: number
  248. }[]
  249. }>('/app-api/basicsetting/set-task-center/page', query)
  250. export const getCircleTags = (query) =>
  251. httpGet<{
  252. list: {
  253. id: number
  254. labelName: string
  255. labelType: number
  256. usageCount: number
  257. creator: string
  258. createTime: number
  259. }[]
  260. }>('/app-api/basicsetting/set-label/page', query)
  261. export const getSetIndexConfigs = (query = {}) =>
  262. httpGet<{
  263. list: {
  264. id: number
  265. name: string
  266. indexPromotionalVideoImage: string
  267. coverVideoImage: string
  268. sort: number
  269. playCount: number
  270. status: number
  271. createTime: string
  272. }[]
  273. }>('/app-api/basicsetting/set-index-config/page', query)
  274. /**
  275. * 获取材料商列表
  276. * @param query {{brandLevel: '1'|'2'}}
  277. * @returns {Promise<*>}
  278. */
  279. export const getMaterials = (query = {}) =>
  280. httpGet<{
  281. list: MaterialDealer[]
  282. }>('/app-api/member/materials/page', query)
  283. export const getAppMaterials = () =>
  284. httpGet<MaterialDealerRes[]>('/app-api/member/materials/appMaterialsList')
  285. export const getAppMaterial = (id: number) =>
  286. httpGet<MaterialDealerDetail>('/app-api/member/materials/queryHomePage', { materialsId: id })
  287. export const getMaterialHomePage = (id: number) =>
  288. httpGet<Partial<MaterialDealerHomePage>>('/app-api/member/materials/queryHomePage', {
  289. materialsId: id,
  290. })
  291. export const getMaterialDetail = (query: { id: string }) =>
  292. httpGet<MaterialDealerDetail>('/app-api/member/materials/getDetail', query)
  293. export const createMaterialsReferrer = (data) =>
  294. httpPost('/app-api/member/materials-referrer/create', data)
  295. export const getContents = (query: {
  296. contentType?: '1' | '2' | '3'
  297. contentCategory?: string
  298. pageSize?: string
  299. }) => httpGet<{ list: Content[] }>('/app-api/member/content-manger/page', query)
  300. export const getAllCategories = () =>
  301. httpGet<Category[]>('/app-api/member/categories/getAllCategories')
  302. export const getContent = (query: { id: string }) =>
  303. httpGet<Content>('/app-api/member/content-manger/get', query)
  304. export const getProductCategories = () =>
  305. httpGet<Category[]>('/app-api/member/product-type/getAllProductCategories', {})
  306. export const getProducts = (query: { oneCategory?: string; secondCategory?: string }) =>
  307. httpPost<{
  308. list: {
  309. prodcutName: string
  310. productId: string
  311. needPoints: number
  312. points: number
  313. productPrice: string
  314. productCoverImgUrl: string
  315. productDetailsImgUrl: string
  316. contentDesc: string
  317. productType: string
  318. oneCategory: any
  319. secondCategory: string
  320. }[]
  321. }>('/app-api/member/product/page', {}, query)
  322. export const getProduct = (id: string) =>
  323. httpGet<{
  324. id: number
  325. prodcutName: string
  326. productId: string
  327. oneCategory: any
  328. oneCategoryName: any
  329. secondCategory: string
  330. secondCategoryName: any
  331. isRestrict: number
  332. productRepertory: any
  333. productPrice: string
  334. productType: number
  335. vendorId: any
  336. vendorName: string
  337. needPoints: number
  338. points: number
  339. gainType: number
  340. exchangeDesc: string
  341. productCoverImgUrl: string
  342. productDetailsImgUrl: string
  343. contentDesc: string
  344. status: number
  345. exchangeCount: any
  346. memberLevelId: any
  347. memberLevelName: any
  348. favourablePoints: any
  349. favourableEndDate: any
  350. createTime: number
  351. updateTime: number
  352. }>('/app-api/member/product/detail', { productId: id })
  353. export const getActivities = (query) =>
  354. httpGet<{
  355. list: Activity[]
  356. }>('/app-api/member/activity/page', query)
  357. export const getActivity = (id: string) => httpGet<Activity>('/app-api/member/activity/get', { id })
  358. export const activitySignup = (data: { id: number }) =>
  359. httpPost('/app-api/member/activity/signup', data)
  360. export const getActivitySignups = (query: { activityId: string }) =>
  361. httpGet('/app-api/member/activity/signup/page', query)
  362. /**
  363. * 获取Banner列表
  364. */
  365. export const getBanners = (query: { mode: BannerMode }) =>
  366. httpGet<Banner[]>('/app-api/member/banner/get-by-mode', query)
  367. /**
  368. * 获取Banner
  369. */
  370. export const getBanner = (id) => httpGet<Banner>('/app-api/member/banner/get-by-id', { id })
  371. export const refreshToken = (refreshToken: string) =>
  372. httpPost<any>('/app-api/member/auth/refresh-token', {}, { refreshToken })
  373. export const httpGetMock = <T>(data: T) =>
  374. new Promise<IResData<T>>((resolve) => resolve({ code: 1, msg: '', data } as IResData<T>))
  375. export interface Circle {
  376. headUrl: string
  377. stylistId: string | number
  378. stylistName: string
  379. marketing: string
  380. circleDesc: string
  381. tagName: string
  382. detailsType: string
  383. detailsUrl: string
  384. detailsDesc: string
  385. circleType: string
  386. spaceType: string
  387. designStyle: string
  388. spaceAddr: string
  389. customerDemand: string
  390. bannerUrls: string[]
  391. }
  392. export interface CircleRes {
  393. id: number
  394. headUrl?: string
  395. stylistId?: number
  396. stylistName?: string
  397. marketing?: string
  398. circleDesc?: string
  399. tagName?: string
  400. detailsType?: string
  401. detailsUrl?: string
  402. detailsDesc?: string
  403. circleType?: string
  404. spaceType?: string
  405. designStyle?: string
  406. spaceAddr?: string
  407. customerDemand?: string
  408. createTime: number
  409. bannerUrls: string[]
  410. shareCount?: number
  411. upvoteCount?: number
  412. ownUpvote: boolean
  413. reviewCount: number
  414. }