requests.ts 10.0 KB

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