requests.ts 13 KB

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