requests.ts 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. import { httpGet, httpPost } from '../../utils/http'
  2. import { Schedule } from '../models/schedule'
  3. import { DictType, MaterialDealer, MaterialDealerRes, Moment } from '../models/moment'
  4. import dayjs from 'dayjs'
  5. export const getUserInfo = () =>
  6. httpGetMock<any>({
  7. avatar: 'https://via.placeholder.com/21x21',
  8. nickname: '苏小萌',
  9. })
  10. export const getSchedule = () =>
  11. httpGetMock<Schedule>({
  12. name: '东京艺术设计研习营',
  13. cover: 'https://via.placeholder.com/375x297',
  14. items: [
  15. {
  16. title: '早稻田大学课程',
  17. time: '9:00',
  18. content:
  19. '是位于日本东京都新宿区的一所著名的私立大学。它由早稻田大学的创始人大隈重信于1882年创立,是日本超级国际化大学计划(Top Global University Project)选定的大学之一,也是日本顶尖的高等教育机构之一。',
  20. momentExample: 'https://via.placeholder.com/285x157',
  21. monentHint: '*说明:打卡地XX,收集上课素材',
  22. },
  23. {
  24. title: '早稻田大学博物馆参观',
  25. time: '11:00',
  26. content:
  27. '早稻田大学拥有多座博物馆,‌其中最著名的是早稻田大学历史馆。‌早稻田大学历史馆收藏、‌展示着著名校友在运动方面的杰出表现和成就,‌馆内的解说牌以日语和英语标示,‌展现了传统样式风格的建筑。',
  28. momentExample: 'https://via.placeholder.com/285x157',
  29. monentHint: '*说明:打卡地XX,收集上课素材',
  30. },
  31. ],
  32. })
  33. export const getMoment = () =>
  34. httpGetMock<Moment>({
  35. author: {
  36. avatar: 'https://via.placeholder.com/35x35',
  37. nickname: '苏小萌',
  38. level: '0',
  39. },
  40. content: '用心做好设计,为客户创造美好家居环境',
  41. images: [
  42. 'https://via.placeholder.com/165x220',
  43. 'https://via.placeholder.com/220x220',
  44. 'https://via.placeholder.com/165x220',
  45. ],
  46. tags: ['意大利游学设计班'],
  47. shares: 0,
  48. comments: 0,
  49. likes: 0,
  50. createdAt: dayjs('2024-07-15').toDate(),
  51. commentList: [],
  52. })
  53. export const getClassmates = () =>
  54. httpGetMock<any[]>([
  55. {
  56. avatar: 'https://via.placeholder.com/35x35',
  57. nickname: '苏小萌',
  58. level: '0',
  59. },
  60. {
  61. avatar: 'https://via.placeholder.com/35x35',
  62. nickname: '苏小萌',
  63. level: '0',
  64. },
  65. {
  66. avatar: 'https://via.placeholder.com/35x35',
  67. },
  68. ])
  69. export const getClassmate = () =>
  70. httpGetMock<any>({
  71. title: '2023同学荟|清华空间环境艺术设计研修班 阔步向未来',
  72. author: {
  73. avatar: 'https://via.placeholder.com/35x35',
  74. nickname: '苏小萌',
  75. level: '0',
  76. },
  77. viewNum: 125,
  78. createdAt: dayjs('2024-07-15').toDate(),
  79. content: '<div>111111</div>',
  80. })
  81. export const getStudyTours = () =>
  82. httpGetMock<any[]>([
  83. {
  84. title: '东京艺术大学设计游学',
  85. createdAt: dayjs('2024-07-15').toDate(),
  86. startedAt: dayjs('2024-07-15').toDate(),
  87. endedAt: dayjs('2024-08-15').toDate(),
  88. amount: 16000,
  89. },
  90. ])
  91. export const getMaterialDealers = () =>
  92. httpGetMock<any[]>([
  93. {
  94. name: 'IMOLA瓷砖',
  95. icon: 'https://via.placeholder.com/78x78',
  96. brandType: '进口品牌',
  97. type: '瓷砖',
  98. views: 1000,
  99. createdAt: dayjs('2024-07-15').toDate(),
  100. },
  101. {
  102. name: 'IMOLA瓷砖',
  103. icon: 'https://via.placeholder.com/78x78',
  104. brandType: '进口品牌',
  105. type: '瓷砖',
  106. views: 1000,
  107. createdAt: dayjs('2024-07-15').toDate(),
  108. },
  109. ])
  110. export const weixinMiniAppLogin = (phoneCode: string, loginCode: string, state: string) =>
  111. httpPost<any>('/app-api/member/auth/weixin-mini-app-login', {
  112. phoneCode,
  113. loginCode,
  114. state,
  115. })
  116. export const getMemberUserInfo = () => httpGet<any>('/app-api/member/user/get')
  117. export const getByDictType = (
  118. type: string | 'member_channel_source' | 'member_spatial_expertise_type' | DictType,
  119. ) =>
  120. httpGet<
  121. {
  122. label: string
  123. value: string
  124. dictType: string
  125. status: number
  126. }[]
  127. >('/app-api/system/dict-data/type', { type })
  128. export const createUserAuthInfo = (
  129. data: Partial<{
  130. id: number
  131. userId: number
  132. designerName: string
  133. gender: number
  134. mobile: string
  135. channelSource: number
  136. referrer: string
  137. employer: string
  138. spatialExpertiseType: number
  139. attachment: string
  140. auditStatus: number
  141. remark: string
  142. }>,
  143. ) => httpPost<any>('/app-api/member/user-auth-info/create', data)
  144. export const getCircles = (query) =>
  145. httpGet<{
  146. list: {
  147. id: number
  148. headUrl?: string
  149. stylistId?: number
  150. stylistName?: string
  151. marketing?: string
  152. circleDesc?: string
  153. tagName?: string
  154. detailsType?: string
  155. detailsUrl?: string
  156. detailsDesc?: string
  157. circleType?: string
  158. spaceType?: string
  159. designStyle?: string
  160. spaceAddr?: string
  161. customerDemand?: string
  162. createTime: number
  163. bannerUrls: string[]
  164. shareCount?: number
  165. upvoteCount?: number
  166. ownUpvote: boolean
  167. reviewCount: number
  168. }[]
  169. }>('/app-api/member/circle/page', query)
  170. export const createCircle = (data: Partial<Circle>) =>
  171. httpPost<any>('/app-api/member/circle/create', data)
  172. export const getCircle = (id: string) =>
  173. httpGet<Partial<CircleRes>>('/app-api/member/circle/get', { id })
  174. export const createCircleUpvote = (data: { circleId: number; userId: number; userName: string }) =>
  175. httpPost('/app-api/member/circle-upvote/create', data)
  176. export const cancelCircleUpvote = (query: { id: string }) =>
  177. httpGet('/app-apimember/circle-upvote/delete', query)
  178. export const createCircleReview = (
  179. data: Partial<{
  180. circleId: string
  181. userId: string | number
  182. userName: string
  183. reviewContent: string
  184. replayReviewId: string
  185. }>,
  186. ) => httpPost<any>('/app-api/member/circle-review/create', data)
  187. export const getCircleReviews = (query: { circleId: string }) =>
  188. httpGet<{
  189. list: Partial<{
  190. id: number
  191. circleId: number
  192. userId: number
  193. userName: string
  194. reviewContent: string
  195. upvoteCount: any
  196. replayReviewId: any
  197. reviewTime: number
  198. createTime: number
  199. replayToUserName: any
  200. replayToUserId: any
  201. replayFirstId: any
  202. upvote: boolean
  203. ownDel: boolean
  204. }>[]
  205. }>('/app-api/member/circle-review/getCircleReviewByCircleId', query)
  206. export const createCircleReviewUpvote = (data: {
  207. circleId: number
  208. userId: number
  209. userName: string
  210. reviewId: number
  211. }) => httpPost('/app-api/member/circle-review-upvote/create', data)
  212. export const cancelCircleReviewUpvote = (query: {
  213. circleId: string
  214. userId: string
  215. reviewId: string
  216. }) => httpGet('/app-api/member/circle-review-upvote/cancel', query)
  217. export const getCircleReviewUpvotes = (query: { circleId: string; reviewId?: string }) =>
  218. httpGet('/app-api/member/circle-review-upvote/page', query)
  219. export const getReviewReplay = (query: { id: string }) =>
  220. httpGet('/app-api/member/circle-review/getReviewReplay', query)
  221. export const getTasks = (query) =>
  222. httpGet<{
  223. list: {
  224. id: number
  225. taskKey: string
  226. taskValue: string
  227. createTime: string
  228. sort: number
  229. status: number
  230. }[]
  231. }>('/app-api/basicsetting/set-task-center/page', query)
  232. export const getCircleTags = (query) =>
  233. httpGet<{
  234. list: {
  235. id: number
  236. labelName: string
  237. labelType: number
  238. usageCount: number
  239. creator: string
  240. createTime: number
  241. }[]
  242. }>('/app-api/basicsetting/set-label/page', query)
  243. export const getSetIndexConfigs = (query = {}) =>
  244. httpGet<{
  245. list: {
  246. id: number
  247. name: string
  248. indexPromotionalVideoImage: string
  249. coverVideoImage: string
  250. sort: number
  251. playCount: number
  252. status: number
  253. createTime: string
  254. }[]
  255. }>('/app-api/basicsetting/set-index-config/page', query)
  256. /**
  257. * 获取材料商列表
  258. * @param query {{brandLevel: '1'|'2'}}
  259. * @returns {Promise<*>}
  260. */
  261. export const getMaterials = (query = {}) =>
  262. httpGet<{
  263. list: MaterialDealer[]
  264. }>('/app-api/member/materials/page', query)
  265. export const getAppMaterials = () =>
  266. httpGet<MaterialDealerRes[]>('/app-api/member/materials/appMaterialsList')
  267. export const getAppMaterial = (id: number) =>
  268. httpGet<MaterialDealerRes>('/app-api/member/materials/queryHomePage', { id })
  269. export const createMaterialsReferrer = (data) =>
  270. httpPost('/app-api/member/materials-referrer/create', data)
  271. export const refreshToken = (refreshToken: string) =>
  272. httpPost<any>('/app-api/member/auth/refresh-token', {}, { refreshToken })
  273. export const httpGetMock = <T>(data: T) =>
  274. new Promise<IResData<T>>((resolve) => resolve({ code: 1, msg: '', data } as IResData<T>))
  275. export interface Circle {
  276. headUrl: string
  277. stylistId: string | number
  278. stylistName: string
  279. marketing: string
  280. circleDesc: string
  281. tagName: string
  282. detailsType: string
  283. detailsUrl: string
  284. detailsDesc: string
  285. circleType: string
  286. spaceType: string
  287. designStyle: string
  288. spaceAddr: string
  289. customerDemand: string
  290. bannerUrls: string[]
  291. }
  292. export interface CircleRes {
  293. id: number
  294. headUrl?: string
  295. stylistId?: number
  296. stylistName?: string
  297. marketing?: string
  298. circleDesc?: string
  299. tagName?: string
  300. detailsType?: string
  301. detailsUrl?: string
  302. detailsDesc?: string
  303. circleType?: string
  304. spaceType?: string
  305. designStyle?: string
  306. spaceAddr?: string
  307. customerDemand?: string
  308. createTime: number
  309. bannerUrls: string[]
  310. shareCount?: number
  311. upvoteCount?: number
  312. ownUpvote: boolean
  313. reviewCount: number
  314. }