requests.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. import { httpGet, httpPost, httpPut, httpDelete } from '../../utils/http'
  2. import { Schedule } from '../models/schedule'
  3. import { Moment } from '../models/moment'
  4. import dayjs from 'dayjs'
  5. import {
  6. PointsOrder,
  7. ResPageData,
  8. Todo,
  9. Agent,
  10. AgentTask,
  11. } from '@designer-hub/app/src/core/libs/models'
  12. export const getUserInfo = () =>
  13. httpGetMock<any>({
  14. avatar: 'https://via.placeholder.com/21x21',
  15. nickname: '苏小萌',
  16. })
  17. export const getSchedule = () =>
  18. httpGetMock<Schedule>({
  19. name: '东京艺术设计研习营',
  20. cover: 'https://via.placeholder.com/375x297',
  21. items: [
  22. {
  23. title: '早稻田大学课程',
  24. time: '9:00',
  25. content:
  26. '是位于日本东京都新宿区的一所著名的私立大学。它由早稻田大学的创始人大隈重信于1882年创立,是日本超级国际化大学计划(Top Global University Project)选定的大学之一,也是日本顶尖的高等教育机构之一。',
  27. momentExample: 'https://via.placeholder.com/285x157',
  28. monentHint: '*说明:打卡地XX,收集上课素材',
  29. },
  30. {
  31. title: '早稻田大学博物馆参观',
  32. time: '11:00',
  33. content:
  34. '早稻田大学拥有多座博物馆,‌其中最著名的是早稻田大学历史馆。‌早稻田大学历史馆收藏、‌展示着著名校友在运动方面的杰出表现和成就,‌馆内的解说牌以日语和英语标示,‌展现了传统样式风格的建筑。',
  35. momentExample: 'https://via.placeholder.com/285x157',
  36. monentHint: '*说明:打卡地XX,收集上课素材',
  37. },
  38. ],
  39. })
  40. export const getMoment = () =>
  41. httpGetMock<Moment>({
  42. author: {
  43. avatar: 'https://via.placeholder.com/35x35',
  44. nickname: '苏小萌',
  45. level: '0',
  46. },
  47. content: '用心做好设计,为客户创造美好家居环境',
  48. images: [
  49. 'https://via.placeholder.com/165x220',
  50. 'https://via.placeholder.com/220x220',
  51. 'https://via.placeholder.com/165x220',
  52. ],
  53. tags: ['意大利游学设计班'],
  54. shares: 0,
  55. comments: 0,
  56. likes: 0,
  57. createdAt: dayjs('2024-07-15').toDate(),
  58. commentList: [],
  59. })
  60. export const getClassmates = () =>
  61. httpGetMock<any[]>([
  62. {
  63. avatar: 'https://via.placeholder.com/35x35',
  64. nickname: '苏小萌',
  65. level: '0',
  66. },
  67. {
  68. avatar: 'https://via.placeholder.com/35x35',
  69. nickname: '苏小萌',
  70. level: '0',
  71. },
  72. {
  73. avatar: 'https://via.placeholder.com/35x35',
  74. },
  75. ])
  76. export const getClassmate = () =>
  77. httpGetMock<any>({
  78. title: '2023同学荟|清华空间环境艺术设计研修班 阔步向未来',
  79. author: {
  80. avatar: 'https://via.placeholder.com/35x35',
  81. nickname: '苏小萌',
  82. level: '0',
  83. },
  84. viewNum: 125,
  85. createdAt: dayjs('2024-07-15').toDate(),
  86. content: '<div>111111</div>',
  87. })
  88. export const getStudyTours = () =>
  89. httpGetMock<any[]>([
  90. {
  91. title: '东京艺术大学设计游学',
  92. createdAt: dayjs('2024-07-15').toDate(),
  93. startedAt: dayjs('2024-07-15').toDate(),
  94. endedAt: dayjs('2024-08-15').toDate(),
  95. amount: 16000,
  96. },
  97. ])
  98. export const getMaterialDealers = () =>
  99. httpGetMock<any[]>([
  100. {
  101. name: 'IMOLA瓷砖',
  102. icon: 'https://via.placeholder.com/78x78',
  103. brandType: '进口品牌',
  104. type: '瓷砖',
  105. views: 1000,
  106. createdAt: dayjs('2024-07-15').toDate(),
  107. },
  108. {
  109. name: 'IMOLA瓷砖',
  110. icon: 'https://via.placeholder.com/78x78',
  111. brandType: '进口品牌',
  112. type: '瓷砖',
  113. views: 1000,
  114. createdAt: dayjs('2024-07-15').toDate(),
  115. },
  116. ])
  117. export const weixinMiniAppLogin = (phoneCode: string, loginCode: string, state: string) =>
  118. httpPost<any>('/app-api/member/auth/weixin-mini-app-login', {
  119. phoneCode,
  120. loginCode,
  121. state,
  122. })
  123. export const getMemberUserInfo = () => httpGet<any>('/app-api/member/user/get')
  124. export const getByDictType = (type: string | 'member_channel_source') =>
  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 createUserAuthInfo = (
  134. data: Partial<{
  135. id: number
  136. userId: number
  137. designerName: string
  138. gender: number
  139. mobile: string
  140. channelSource: number
  141. referrer: string
  142. employer: string
  143. spatialExpertiseType: number
  144. attachment: string
  145. auditStatus: number
  146. remark: string
  147. }>,
  148. ) => httpPost<any>('/app-api/member/user-auth-info/create', data)
  149. export const getCircles = (query) =>
  150. httpGet<{
  151. list: {
  152. id: number
  153. headUrl?: string
  154. stylistId?: number
  155. stylistName?: string
  156. marketing?: string
  157. circleDesc?: string
  158. tagName?: string
  159. detailsType?: string
  160. detailsUrl?: string
  161. detailsDesc?: string
  162. circleType?: string
  163. spaceType?: string
  164. designStyle?: string
  165. spaceAddr?: string
  166. customerDemand?: string
  167. createTime: number
  168. bannerUrls: string[]
  169. shareCount?: number
  170. upvoteCount?: number
  171. ownUpvote: boolean
  172. reviewCount: number
  173. }[]
  174. }>('/app-api/member/circle/page', query)
  175. export const createCircle = (data: Partial<Circle>) =>
  176. httpPost<any>('/app-api/member/circle/create', data)
  177. export const getCircle = (id: string) =>
  178. httpGet<Partial<CircleRes>>('/app-api/member/circle/get', { id })
  179. export const createCircleUpvote = (data: { circleId: number; userId: number; userName: string }) =>
  180. httpPost('/app-api/member/circle-upvote/create', data)
  181. export const cancelCircleUpvote = (query: { id: string }) =>
  182. httpGet('/app-apimember/circle-upvote/delete', query)
  183. export const createCircleReview = (
  184. data: Partial<{
  185. circleId: string
  186. userId: string | number
  187. userName: string
  188. reviewContent: string
  189. replayReviewId: string
  190. }>,
  191. ) => httpPost<any>('/app-api/member/circle-review/create', data)
  192. export const getCircleReviews = (query: { circleId: string }) =>
  193. httpGet<{
  194. list: Partial<{
  195. id: number
  196. circleId: number
  197. userId: number
  198. userName: string
  199. reviewContent: string
  200. upvoteCount: any
  201. replayReviewId: any
  202. reviewTime: number
  203. createTime: number
  204. replayToUserName: any
  205. replayToUserId: any
  206. replayFirstId: any
  207. upvote: boolean
  208. ownDel: boolean
  209. }>[]
  210. }>('/app-api/member/circle-review/getCircleReviewByCircleId', query)
  211. export const createCircleReviewUpvote = (data: {
  212. circleId: number
  213. userId: number
  214. userName: string
  215. reviewId: number
  216. }) => httpPost('/app-api/member/circle-review-upvote/create', data)
  217. export const cancelCircleReviewUpvote = (query: {
  218. circleId: string
  219. userId: string
  220. reviewId: string
  221. }) => httpGet('/app-api/member/circle-review-upvote/cancel', query)
  222. export const getCircleReviewUpvotes = (query: { circleId: string; reviewId?: string }) =>
  223. httpGet('/app-api/member/circle-review-upvote/page', query)
  224. export const getReviewReplay = (query: { id: string }) =>
  225. httpGet('/app-api/member/circle-review/getReviewReplay', query)
  226. // 获取设计师列表
  227. export const getDesignerList = (query: { brokerId: string; pageNo: number; pageSize: any }) =>
  228. httpGet<ResPageData<any>>('/app-api/member/report-info/pageStylistByBrokerId', query)
  229. // 添加关系报备
  230. export const createReportInfo = (data) => httpPost<any>('/app-api/member/report-info/create', data)
  231. // 获取任务列表
  232. export const getTaskList = (query) => httpGet<any>('/app-api/member/task/task-list', query)
  233. // 任务详情
  234. export const getTaskDetail = (query) =>
  235. httpGet<AgentTask>('/app-api/member/task/task-detail', query)
  236. // 领取任务
  237. export const taskReceive = (data) => httpPost<any>('/app-api/member/task/task-receive', data)
  238. // 任务上报
  239. export const appTaskReport = (data) => httpPost<any>('/app-api/member/app-task-report/create', data)
  240. export const getTasks = (query) =>
  241. httpGet<{
  242. list: {
  243. id: number
  244. taskKey: string
  245. taskValue: string
  246. createTime: string
  247. sort: number
  248. status: number
  249. }[]
  250. }>('/app-api/basicsetting/set-task-center/page', query)
  251. export const login = (data: {
  252. mobile: string
  253. password: string
  254. socialType: number
  255. socialCode: string
  256. socialState: string
  257. socialCodeValid: boolean
  258. }) =>
  259. httpPost<{
  260. userId: number
  261. accessToken: string
  262. refreshToken: string
  263. expiresTime: number
  264. appLoginType: number
  265. openid: any
  266. }>('/app-api/member/auth/login', data)
  267. export const refreshToken = (refreshToken: string) =>
  268. httpPost<any>('/app-api/member/auth/refresh-token', {}, { refreshToken })
  269. /**
  270. * 商家端-扫码验券
  271. */
  272. export const scanCodeCheckPaper = (data: { orderNo: string }) =>
  273. httpPost('/app-api/member/vendorApp/scanCodeCheckPaper', data)
  274. /**
  275. * 商家端-获取商家信息
  276. */
  277. export const getVendorAppInfo = () =>
  278. httpGet<{
  279. id: number
  280. avatar: string
  281. vendorName: string
  282. contactName: string
  283. password: string
  284. mobile: string
  285. status: number
  286. createTime: number
  287. orderCount: any
  288. totalPoints: any
  289. level: number
  290. }>('/app-api/member/vendorApp/getInfo')
  291. /**
  292. * 商家端-获取商家订单
  293. */
  294. export const getOrders = () =>
  295. httpPost<
  296. ResPageData<{
  297. id: number
  298. orderType: number
  299. item?: number
  300. materialsId: any
  301. materialsBrand: any
  302. stylistId: number
  303. orderMoney: any
  304. projectName: string
  305. pointsRate: any
  306. points: string
  307. orderImgUrl?: string
  308. orderStatus: string
  309. verifyTime: any
  310. completeTime?: number
  311. turnDownTime: any
  312. cancelTime?: number
  313. cancelReason: any
  314. turnDownReason: any
  315. remark: any
  316. couponId: any
  317. orderNo: string
  318. createTime: number
  319. brokerageRate: any
  320. brokerage: any
  321. orderQuantity: number
  322. payType?: number
  323. payPoints?: number
  324. }>
  325. >('/app-api/member/vendorApp/getPointsOrderByVendorPage')
  326. /**
  327. * 商家端-获取订单详情
  328. */
  329. export const getPointsOrder = (id) =>
  330. httpGet<Partial<PointsOrder>>('/app-api/member/points-order/get', { id })
  331. /**
  332. * 渠道端-获取待办列表
  333. */
  334. export const getTodos = (query: { brokerId: string; executionTime: string }) =>
  335. httpGet<Todo[]>('/app-api/member/todo/list', query)
  336. /**
  337. * 渠道端-获取待办分页
  338. */
  339. export const getTodoPage = (query: { pageNo: number; pageSize: number }) =>
  340. httpGet<ResPageData<Todo>>('/app-api/member/todo/page', query)
  341. /**
  342. * 渠道端-创建待办
  343. */
  344. export const createTodo = (data: Partial<Todo>) => httpPost('/app-api/member/todo/create', data)
  345. /**
  346. * 渠道端-删除待办
  347. */
  348. export const deleteTodo = (id: number) => httpDelete('/app-api/member/todo/delete', { id })
  349. /**
  350. * 渠道端-更新待办
  351. */
  352. export const updateTodo = (data: Partial<Todo>) =>
  353. httpPut('/app-api/member/todo/updateStatus', data)
  354. /**
  355. * 渠道端-获取设计师活动列表
  356. */
  357. export const getDesignerPointsActivities = (query: { brokerId: string }) =>
  358. httpGet<
  359. ResPageData<{
  360. content: string
  361. createTime: number
  362. }>
  363. >('/app-api/member/points-order/getPointsDynamics', query)
  364. /**
  365. * 渠道端-获取本年目标
  366. */
  367. export const getYearTarget = (query?: { brokerId?: string }) =>
  368. httpPost<
  369. {
  370. id: any
  371. brokerId: any
  372. type: number
  373. typeName: string
  374. year: any
  375. target: any
  376. thisYearComplete?: number
  377. thisMonthComplete?: number
  378. remark: any
  379. }[]
  380. >('/app-api/member/app-broker/statisticsThisYearTask')
  381. /**
  382. * 渠道端-获取设计师统计
  383. */
  384. export const getDesignerStatistics = (query = {}) =>
  385. httpPost<any>('/app-api/member/app-broker/statisticsStylist', query)
  386. /**
  387. * 渠道端-获取跟进统计
  388. */
  389. export const getFollowStatistics = (query = {}) =>
  390. httpPost<{ type: number; typeName: string; quantity?: number; thisYearQuantity?: number }[]>(
  391. '/app-api/member/app-broker/statisticsFollowUp',
  392. query,
  393. )
  394. /**
  395. * 渠道端-获取经纪人
  396. */
  397. export const getBroker = (query: { brokerId: string }) =>
  398. httpGet<Agent>('/app-api/member/app-broker/get', query)
  399. /**
  400. * 获取会员等级配置
  401. */
  402. export const getAppMemberLevelConfigs = () =>
  403. httpGet<
  404. {
  405. id: number
  406. memberLevel: number
  407. memberLevelName: string
  408. upgradeCriteria: number
  409. points: number
  410. retentionDaysCriteria: number
  411. retentionDays: number
  412. memberBgImage: string
  413. associatedMemberRights: string
  414. associatedMemberRightsName: string
  415. status: number
  416. createTime: string
  417. logo: string
  418. setMemberRights: {
  419. createTime: string
  420. updateTime: string
  421. creator: string
  422. updater: string
  423. deleted: boolean
  424. id: number
  425. rightsName: string
  426. rightsType: number
  427. rightsImage: string
  428. rightsDescription: string
  429. associatedMemberRightsLevel: string
  430. status: number
  431. }[]
  432. }[]
  433. >('/app-api/basicsetting/app-set-member-level-config/listAndRights')
  434. /**
  435. * 获取设计师积分订单
  436. */
  437. export const getPointsOrders = (query: Partial<PointsOrder>) =>
  438. httpGet<{
  439. list: PointsOrder[]
  440. total: number
  441. }>('/app-api/member/points-order/page', query)
  442. export const httpGetMock = <T>(data: T) =>
  443. new Promise<IResData<T>>((resolve) => resolve({ code: 1, msg: '', data } as IResData<T>))
  444. export interface Circle {
  445. headUrl: string
  446. stylistId: string | number
  447. stylistName: string
  448. marketing: string
  449. circleDesc: string
  450. tagName: string
  451. detailsType: string
  452. detailsUrl: string
  453. detailsDesc: string
  454. circleType: string
  455. spaceType: string
  456. designStyle: string
  457. spaceAddr: string
  458. customerDemand: string
  459. bannerUrls: string[]
  460. }
  461. export interface CircleRes {
  462. id: number
  463. headUrl?: string
  464. stylistId?: number
  465. stylistName?: string
  466. marketing?: string
  467. circleDesc?: string
  468. tagName?: string
  469. detailsType?: string
  470. detailsUrl?: string
  471. detailsDesc?: string
  472. circleType?: string
  473. spaceType?: string
  474. designStyle?: string
  475. spaceAddr?: string
  476. customerDemand?: string
  477. createTime: number
  478. bannerUrls: string[]
  479. shareCount?: number
  480. upvoteCount?: number
  481. ownUpvote: boolean
  482. reviewCount: number
  483. }