requests.ts 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744
  1. import { http, 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. StudyTour,
  17. } from '../models/moment'
  18. import dayjs from 'dayjs'
  19. export const getUserInfo = () =>
  20. httpGetMock<any>({
  21. avatar: 'https://via.placeholder.com/21x21',
  22. nickname: '苏小萌',
  23. })
  24. export const getSchedule = () =>
  25. httpGetMock<Schedule>({
  26. name: '东京艺术设计研习营',
  27. cover: 'https://via.placeholder.com/375x297',
  28. items: [
  29. {
  30. title: '早稻田大学课程',
  31. time: '9:00',
  32. content:
  33. '是位于日本东京都新宿区的一所著名的私立大学。它由早稻田大学的创始人大隈重信于1882年创立,是日本超级国际化大学计划(Top Global University Project)选定的大学之一,也是日本顶尖的高等教育机构之一。',
  34. momentExample: 'https://via.placeholder.com/285x157',
  35. monentHint: '*说明:打卡地XX,收集上课素材',
  36. },
  37. {
  38. title: '早稻田大学博物馆参观',
  39. time: '11:00',
  40. content:
  41. '早稻田大学拥有多座博物馆,‌其中最著名的是早稻田大学历史馆。‌早稻田大学历史馆收藏、‌展示着著名校友在运动方面的杰出表现和成就,‌馆内的解说牌以日语和英语标示,‌展现了传统样式风格的建筑。',
  42. momentExample: 'https://via.placeholder.com/285x157',
  43. monentHint: '*说明:打卡地XX,收集上课素材',
  44. },
  45. ],
  46. })
  47. export const getMoment = () =>
  48. httpGetMock<Moment>({
  49. author: {
  50. avatar: 'https://via.placeholder.com/35x35',
  51. nickname: '苏小萌',
  52. level: '0',
  53. },
  54. content: '用心做好设计,为客户创造美好家居环境',
  55. images: [
  56. 'https://via.placeholder.com/165x220',
  57. 'https://via.placeholder.com/220x220',
  58. 'https://via.placeholder.com/165x220',
  59. ],
  60. tags: ['意大利游学设计班'],
  61. shares: 0,
  62. comments: 0,
  63. likes: 0,
  64. createdAt: dayjs('2024-07-15').toDate(),
  65. commentList: [],
  66. })
  67. export const getClassmates = () =>
  68. httpGetMock<any[]>([
  69. {
  70. avatar: 'https://via.placeholder.com/35x35',
  71. nickname: '苏小萌',
  72. level: '0',
  73. },
  74. {
  75. avatar: 'https://via.placeholder.com/35x35',
  76. nickname: '苏小萌',
  77. level: '0',
  78. },
  79. {
  80. avatar: 'https://via.placeholder.com/35x35',
  81. },
  82. ])
  83. export const getClassmate = () =>
  84. httpGetMock<any>({
  85. title: '2023同学荟|清华空间环境艺术设计研修班 阔步向未来',
  86. author: {
  87. avatar: 'https://via.placeholder.com/35x35',
  88. nickname: '苏小萌',
  89. level: '0',
  90. },
  91. viewNum: 125,
  92. createdAt: dayjs('2024-07-15').toDate(),
  93. content: '<div>111111</div>',
  94. })
  95. export const getMaterialDealers = () =>
  96. httpGetMock<any[]>([
  97. {
  98. name: 'IMOLA瓷砖',
  99. icon: 'https://via.placeholder.com/78x78',
  100. brandType: '进口品牌',
  101. type: '瓷砖',
  102. views: 1000,
  103. createdAt: dayjs('2024-07-15').toDate(),
  104. },
  105. {
  106. name: 'IMOLA瓷砖',
  107. icon: 'https://via.placeholder.com/78x78',
  108. brandType: '进口品牌',
  109. type: '瓷砖',
  110. views: 1000,
  111. createdAt: dayjs('2024-07-15').toDate(),
  112. },
  113. ])
  114. export const weixinMiniAppLogin = (phoneCode: string, loginCode: string, state: string) =>
  115. httpPost<any>('/app-api/member/auth/weixin-mini-app-login', {
  116. phoneCode,
  117. loginCode,
  118. state,
  119. })
  120. export const getMemberUserInfo = () => httpGet<any>('/app-api/member/user/get')
  121. export const updateMemberUserInfo = (data = {}) => httpPut<any>('/app-api/member/user/update', data)
  122. export const getByDictType = (
  123. type: string | 'member_channel_source' | 'member_spatial_expertise_type' | DictType,
  124. ) =>
  125. httpGet<
  126. {
  127. label: string
  128. value: string
  129. dictType: string
  130. status: number
  131. }[]
  132. >('/app-api/system/dict-data/type', { type })
  133. export const validateReferrerCode = (data: { code: string }) =>
  134. httpPost('/app-api/member/user-auth-info/referrer-validate-code', {}, data)
  135. export const createUserAuthInfo = (
  136. data: Partial<{
  137. id: number
  138. userId: number
  139. designerName: string
  140. gender: number
  141. mobile: string
  142. channelSource: number
  143. referrer: string
  144. employer: string
  145. spatialExpertiseType: number
  146. attachment: string
  147. auditStatus: number
  148. remark: string
  149. }>,
  150. ) => httpPost<any>('/app-api/member/user-auth-info/create', data)
  151. /**
  152. * 获取设计师审核
  153. */
  154. export const getUserAuthInfo = () => httpPost('/app-api/member/user-auth-info/get')
  155. export const getCircles = (query: { tagName?: string; circleType?: string; stylistId?: string }) =>
  156. httpGet<{
  157. list: {
  158. id: number
  159. headUrl?: string
  160. stylistId?: number
  161. stylistName?: string
  162. marketing?: string
  163. circleDesc?: string
  164. tagName?: string
  165. detailsType?: string
  166. detailsUrl?: string
  167. detailsDesc?: string
  168. circleType?: string
  169. spaceType?: string
  170. designStyle?: string
  171. spaceAddr?: string
  172. customerDemand?: string
  173. createTime: number
  174. bannerUrls: string[]
  175. shareCount?: number
  176. upvoteCount?: number
  177. ownUpvote: boolean
  178. reviewCount: number
  179. }[]
  180. }>('/app-api/member/circle/page', query)
  181. export const createCircle = (data: Partial<Circle>) =>
  182. httpPost<any>('/app-api/member/circle/create', data)
  183. export const getCircle = (id: string) =>
  184. httpGet<Partial<CircleRes>>('/app-api/member/circle/get', { id })
  185. export const shareCircle = (id: string) => httpGet('/app-api/member/circle/share', { id })
  186. export const getCircleUpvotes = (id) =>
  187. httpGet<{
  188. total: number
  189. list: {
  190. id: number
  191. circleId: number
  192. userId: number
  193. upvpteTime: number
  194. createTime: number
  195. userName: string
  196. }[]
  197. }>('/app-api/member/circle-upvote/page', { circleId: id })
  198. export const createCircleUpvote = (data: { circleId: number; userId: number; userName: string }) =>
  199. httpPost('/app-api/member/circle-upvote/create', data)
  200. /**
  201. * 取消圈子点赞
  202. */
  203. export const cancelCircleUpvote = (query: { id: string }) =>
  204. httpGet('/app-api/member/circle-upvote/delete', query)
  205. export const createCircleReview = (
  206. data: Partial<{
  207. circleId: string
  208. userId: string | number
  209. userName: string
  210. reviewContent: string
  211. replayReviewId: string
  212. }>,
  213. ) => httpPost<any>('/app-api/member/circle-review/create', data)
  214. export const deleteCircleReview = (id) => httpGet('/app-api/member/circle-review/delete', { id })
  215. export const getCircleReviews = (query: { circleId: string }) =>
  216. httpGet<{
  217. list: Comment[]
  218. }>('/app-api/member/circle-review/getCircleReviewByCircleId', query)
  219. export const createCircleReviewUpvote = (data: {
  220. circleId: number
  221. userId: number
  222. userName: string
  223. reviewId: number
  224. }) => httpPost('/app-api/member/circle-review-upvote/create', data)
  225. export const cancelCircleReviewUpvote = (query: {
  226. circleId: string
  227. userId: string
  228. reviewId: string
  229. }) => httpGet('/app-api/member/circle-review-upvote/cancel', query)
  230. export const getCircleReviewUpvotes = (query: { circleId: string; reviewId?: string }) =>
  231. httpGet('/app-api/member/circle-review-upvote/page', query)
  232. export const getReviewReplay = (query: { id: string }) =>
  233. httpGet('/app-api/member/circle-review/getReviewReplay', query)
  234. export const getTasks = (query) =>
  235. httpGet<{
  236. list: {
  237. id: number
  238. taskKey: string
  239. taskValue: string
  240. createTime: string
  241. sort: number
  242. status: number
  243. }[]
  244. }>('/app-api/basicsetting/set-task-center/page', query)
  245. export const getCircleTags = (query) =>
  246. httpGet<{
  247. list: {
  248. id: number
  249. labelName: string
  250. labelType: number
  251. usageCount: number
  252. creator: string
  253. createTime: number
  254. }[]
  255. }>('/app-api/basicsetting/set-label/page', query)
  256. export const getSetIndexConfigs = (query = {}) =>
  257. httpGet<{
  258. list: {
  259. id: number
  260. name: string
  261. indexPromotionalVideoImage: string
  262. coverVideoImage: string
  263. sort: number
  264. playCount: number
  265. status: number
  266. createTime: string
  267. }[]
  268. }>('/app-api/basicsetting/set-index-config/page', query)
  269. /**
  270. * 获取材料商列表
  271. * @param query {{brandLevel: '1'|'2'}}
  272. * @returns {Promise<*>}
  273. */
  274. export const getMaterials = (query = {}) =>
  275. httpGet<{
  276. list: MaterialDealer[]
  277. }>('/app-api/member/materials/page', query)
  278. export const getAppMaterials = () =>
  279. httpGet<MaterialDealerRes[]>('/app-api/member/materials/appMaterialsList')
  280. export const getAppMaterial = (id: number) =>
  281. httpGet<MaterialDealerDetail>('/app-api/member/materials/queryHomePage', { materialsId: id })
  282. export const getMaterialHomePage = (id: number) =>
  283. httpGet<Partial<MaterialDealerHomePage>>('/app-api/member/materials/queryHomePage', {
  284. materialsId: id,
  285. })
  286. export const getMaterialDetail = (query: { id: string }) =>
  287. httpGet<MaterialDealerDetail>('/app-api/member/materials/getDetail', query)
  288. export const createMaterialsReferrer = (data) =>
  289. httpPost('/app-api/member/materials-referrer/create', data)
  290. export const getContents = (query: {
  291. contentType?: '1' | '2' | '3'
  292. contentCategory?: string
  293. pageSize?: string
  294. }) => httpGet<{ list: Content[] }>('/app-api/member/content-manger/page', query)
  295. export const getAllCategories = () =>
  296. httpGet<Category[]>('/app-api/member/categories/getAllCategories')
  297. export const getContent = (query: { id: string }) =>
  298. httpGet<Content>('/app-api/member/content-manger/get', query)
  299. export const getProductCategories = () =>
  300. httpGet<Category[]>('/app-api/member/product-type/getAllProductCategories', {})
  301. export const getProducts = (query: { oneCategory?: string; secondCategory?: string }) =>
  302. httpPost<{
  303. list: {
  304. prodcutName: string
  305. productId: string
  306. needPoints: number
  307. points: number
  308. productPrice: string
  309. productCoverImgUrl: string
  310. productDetailsImgUrl: string
  311. contentDesc: string
  312. productType: string
  313. oneCategory: any
  314. secondCategory: string
  315. }[]
  316. }>('/app-api/member/product/page', {}, query)
  317. export const getProduct = (id: string) =>
  318. httpGet<{
  319. id: number
  320. prodcutName: string
  321. productId: string
  322. oneCategory: any
  323. oneCategoryName: any
  324. secondCategory: string
  325. secondCategoryName: any
  326. isRestrict: number
  327. productRepertory: any
  328. productPrice: string
  329. productType: number
  330. vendorId: any
  331. vendorName: string
  332. needPoints: number
  333. points: number
  334. gainType: number
  335. exchangeDesc: string
  336. productCoverImgUrl: string
  337. productDetailsImgUrl: string
  338. contentDesc: string
  339. status: number
  340. exchangeCount: any
  341. memberLevelId: any
  342. memberLevelName: any
  343. favourablePoints: any
  344. favourableEndDate: any
  345. createTime: number
  346. updateTime: number
  347. }>('/app-api/member/product/detail', { productId: id })
  348. export const getProductItemBuy = (query: { userId: number }) =>
  349. httpPost<{
  350. list: Partial<{
  351. productId: string
  352. prodcutName: string
  353. oneCategory: any
  354. secondCategory: string
  355. isRestrict: number
  356. productRepertory: any
  357. productPrice: string
  358. productType: string
  359. vendorId: any
  360. vendorName: string
  361. needPoints: number
  362. points?: number
  363. gainType: number
  364. exchangeDesc: any
  365. productCoverImgUrl: string
  366. productDetailsImgUrl: string
  367. contentDesc: string
  368. status: number
  369. exchangeCount: any
  370. memberLevelId: any
  371. memberLevelName: any
  372. favourablePoints?: number
  373. favourableEndDate?: number
  374. favourableStatus: number
  375. count: number
  376. createTime: any
  377. }>[]
  378. total: number
  379. }>('/app-api/member/product-item-buy/select', query)
  380. /**
  381. * 商品添加到购物车
  382. */
  383. export const createProductItemBuy = (data: {
  384. doList: {
  385. createTime?: string
  386. updateTime?: string
  387. creator?: string
  388. updater?: string
  389. deleted?: boolean
  390. id?: number
  391. productId?: string
  392. userId?: number
  393. points: number
  394. nums: number
  395. }[]
  396. }) => httpPost('/app-api/member/product-item-buy/create', data)
  397. /**
  398. * 从购物车删除商品
  399. */
  400. export const deleteProductItemBuy = (data: {
  401. doList: {
  402. createTime?: string
  403. updateTime?: string
  404. creator?: string
  405. updater?: string
  406. deleted?: boolean
  407. id?: number
  408. productId?: string
  409. userId?: number
  410. }[]
  411. }) => httpPost('/app-api/member/product-item-buy/delete', data)
  412. /**
  413. * 商城下单
  414. */
  415. export const productPlacing = (data: {
  416. isShoppingCart: number
  417. userId: number
  418. list: {
  419. orderNo?: string
  420. productId?: string
  421. points?: number
  422. nums?: number
  423. productName: string
  424. orderImgUrl: string
  425. }[]
  426. couponList: {
  427. couponId: number
  428. brandPoints: number
  429. }[]
  430. totalsPoints?: number
  431. totalsCouponPoints?: number
  432. totalsCurrPoints?: number
  433. }) => httpPost('/app-api/member/points-order/placing', data)
  434. /**
  435. * 订单结算
  436. */
  437. export const orderPay = (data: {
  438. isShoppingCart: number
  439. userId: number
  440. list: {
  441. orderNo?: string
  442. productId?: string
  443. points?: number
  444. nums?: number
  445. }[]
  446. couponList: {
  447. couponId: number
  448. brandPoints: number
  449. }[]
  450. totalsPoints?: number
  451. totalsCouponPoints?: number
  452. totalsCurrPoints?: number
  453. }) => httpPost(`/app-api/member/points-order/placingPay`, data)
  454. export const getPointsOrders = (query) =>
  455. httpGet<{
  456. list: {
  457. id: number
  458. materialsId: any
  459. materialsBrand: any
  460. stylistId: number
  461. orderMoney: any
  462. projectName: string
  463. pointsRate: any
  464. points: string
  465. orderImgUrl?: string
  466. orderStatus: string
  467. verifyTime: any
  468. completeTime?: number
  469. turnDownTime: any
  470. cancelTime: number
  471. cancelReason: any
  472. turnDownReason: any
  473. remark: any
  474. couponId: any
  475. orderNo: string
  476. createTime: number
  477. brokerageRate: any
  478. brokerage: any
  479. }[]
  480. total: number
  481. }>('/app-api/member/points-order/page', query)
  482. export const getActivities = (query) =>
  483. httpGet<{
  484. list: Activity[]
  485. }>('/app-api/member/activity/page', query)
  486. export const getActivity = (id: string) =>
  487. httpGet<Partial<Activity>>('/app-api/member/activity/get', { id })
  488. export const activitySignup = (data: { id: number }) =>
  489. httpPost('/app-api/member/activity/signup', data)
  490. /**
  491. * 获取活动报名列表
  492. */
  493. export const getActivitySignups = (query: { activityId: string }) =>
  494. httpGet<{
  495. list: {
  496. id: number
  497. activityId: number
  498. userId: number
  499. applyTime: number
  500. applyType: number
  501. applyStatus: number
  502. applyPoints: any
  503. isJoin: string
  504. createTime: number
  505. name: string
  506. headImgUrl: string
  507. mobile: string
  508. brokerId: any
  509. brokerName: string
  510. memberLevelId: number
  511. memberLevelName: any
  512. }[]
  513. total: number
  514. }>('/app-api/member/activity/signup/page', query)
  515. /**
  516. * 获取游学列表
  517. */
  518. export const getStudyTours = (query) =>
  519. httpGet<{ list: StudyTour[]; total: number }>('/app-api/member/app-study-abroad/page', query)
  520. /**
  521. * 获取游学详情
  522. */
  523. export const getStudyTour = (id: string) =>
  524. httpGet<StudyTour>('/app-api/member/app-study-abroad/get', { id })
  525. /**
  526. * 游学报名
  527. */
  528. export const studyTourSignup = (data: { id: number }) =>
  529. httpPost('/app-api/member/app-study-abroad/signup', data)
  530. /**
  531. * 获取游学报名列表
  532. */
  533. export const getStudyTourSignups = (query: { studyId: string }) =>
  534. httpGet<{
  535. list: {
  536. id: number
  537. activityId: number
  538. userId: number
  539. applyTime: number
  540. applyType: number
  541. applyStatus: number
  542. applyPoints: any
  543. isJoin: string
  544. createTime: number
  545. name: string
  546. headImgUrl: string
  547. mobile: string
  548. brokerId: any
  549. brokerName: string
  550. memberLevelId: number
  551. memberLevelName: any
  552. }[]
  553. total: number
  554. }>('/app-api/member/app-study-abroad/signup/page', query)
  555. /**
  556. * 获取Banner列表
  557. */
  558. export const getBanners = (query: { mode: BannerMode }) =>
  559. httpGet<Banner[]>('/app-api/member/banner/get-by-mode', query)
  560. /**
  561. * 获取消息列表
  562. */
  563. export const getMessages = (query) => httpGet('/app-api/member/message-manage/page', query)
  564. /**
  565. * 获取Banner
  566. */
  567. export const getBanner = (id) => httpGet<Banner>('/app-api/member/banner/get-by-id', { id })
  568. /**
  569. * 获取积分明细列表
  570. */
  571. export const getPoints = (query) =>
  572. httpGet<{
  573. list: {
  574. id: number
  575. pointsType: string
  576. typeName: string
  577. pointsCategory: string
  578. categoryName: string
  579. sourceId: number
  580. name: string
  581. pointsStauts: string
  582. points: number
  583. orderMoney: string
  584. materialsId: number
  585. materialsBrand: string
  586. stylistId: number
  587. brokerId: number
  588. stylistName: string
  589. brokerName: string
  590. generateTime: string
  591. verifyTime: string
  592. completeTime: string
  593. turnDownTime: string
  594. cancelTime: string
  595. cancelReason: string
  596. turnDownReason: string
  597. remark: string
  598. couponId: number
  599. orderNo: string
  600. createTime: string
  601. }[]
  602. total: number
  603. }>(`/app-api/member/points-details/pageAllByYear/${query.year}`, query)
  604. /**
  605. * 获取会员等级列表
  606. */
  607. export const getMemberLevels = () =>
  608. httpGet<
  609. {
  610. id: number
  611. memberLevel: number
  612. memberLevelName: string
  613. upgradeCriteria: number
  614. points: number
  615. retentionDaysCriteria: number
  616. retentionDays?: number
  617. memberBgImage: string
  618. associatedMemberRights: string
  619. associatedMemberRightsName: any
  620. status: number
  621. createTime: number
  622. }[]
  623. >('/app-api/basicsetting/set-member-level-config/list')
  624. /**
  625. * 获取设计师信息
  626. */
  627. export const getDesignerInfo = (userId) =>
  628. httpGet<
  629. Partial<{
  630. id: number
  631. userId: number
  632. brokerId: number
  633. brokerName: string
  634. status: string
  635. authTime: number
  636. points: number
  637. headImgUrl: string
  638. shareCount: number
  639. viewCount: number
  640. winCustomerCount: number
  641. serviceYears: string
  642. serviceCustomerCount: number
  643. designFee: string
  644. memberValidTime: number
  645. personalIdentity: string
  646. designDesc: string
  647. followFocus: string
  648. homePageUrl: string
  649. sharePageUrl: string
  650. retryStatus: number
  651. }>
  652. >('/app-api/member/designer/getDesignerInfo', { userId })
  653. /**
  654. * 更新设计师信息
  655. */
  656. export const updateDesignerInfo = (data) =>
  657. httpPost<any>('/app-api/member/designer/updateDesignerInfo', data)
  658. /**
  659. * 预约设计师
  660. */
  661. export const reserveDesigner = (data: {
  662. stylistId: number
  663. stylistName: string
  664. appointmentName: string
  665. appointmentPhone: string
  666. }) => httpPost<any>('/app-api/member/designer/reserveDesigner', data)
  667. /**
  668. * 通过ID获取用户信息
  669. */
  670. export const getUserInfoById = (id) =>
  671. httpGet<
  672. Partial<{
  673. mobile: string
  674. status: string
  675. nickname: string
  676. avatar: string
  677. name: string
  678. sex: string
  679. areaId: number
  680. areaName: string
  681. birthday: string
  682. mark: string
  683. tagIds: string
  684. levelId: number
  685. groupId: number
  686. id: number
  687. registerIp: string
  688. loginIp: string
  689. loginDate: string
  690. createTime: string
  691. point: number
  692. totalPoint: number
  693. tagNames: string
  694. levelName: string
  695. groupName: string
  696. experience: number
  697. }>
  698. >('/app-api/member/user/getByUserId', { id })
  699. export const refreshToken = (refreshToken: string) =>
  700. httpPost<any>('/app-api/member/auth/refresh-token', {}, { refreshToken })
  701. export const httpGetMock = <T>(data: T) =>
  702. new Promise<IResData<T>>((resolve) => resolve({ code: 1, msg: '', data } as IResData<T>))
  703. export interface Circle {
  704. headUrl: string
  705. stylistId: string | number
  706. stylistName: string
  707. marketing: string
  708. circleDesc: string
  709. tagName: string
  710. detailsType: string
  711. detailsUrl: string
  712. detailsDesc: string
  713. circleType: string
  714. spaceType: string
  715. designStyle: string
  716. spaceAddr: string
  717. customerDemand: string
  718. bannerUrls: string[]
  719. }
  720. export interface CircleRes {
  721. id: number
  722. headUrl?: string
  723. stylistId?: number
  724. stylistName?: string
  725. marketing?: string
  726. circleDesc?: string
  727. tagName?: string
  728. detailsType?: string
  729. detailsUrl?: string
  730. detailsDesc?: string
  731. circleType?: string
  732. spaceType?: string
  733. designStyle?: string
  734. spaceAddr?: string
  735. customerDemand?: string
  736. createTime: number
  737. bannerUrls: string[]
  738. shareCount?: number
  739. upvoteCount?: number
  740. ownUpvote: boolean
  741. reviewCount: number
  742. }