RnMultibundler/src/app/screens/api/useBannerList.ts
xuqm 35acc240ab feat(app): 新增首页轮播图和文章详情功能
- 添加首页轮播图组件和相关 API
- 实现文章详情页面和相关 API
- 更新底部导航栏,支持工作台、推荐和我的三个标签页
- 移除 react-native-copilot 依赖- 调整主栈路由,支持新功能
2025-09-01 16:49:47 +08:00

45 行
5.6 KiB
TypeScript

import {useApi} from '@common/api/useApi';
import {z} from 'zod';
// 精品服务功能块
const featureSchema = z.object({
uniqueId: z.string(), // 功能 id
name: z.string(), // 功能名称
icon: z.string().optional(), // 图标
link: z.string(), // 链接 http/https链接、ywxApp://TeamIndexView
recommend: z.boolean().optional().default(false), // 是否是主推功能
advertisePic: z.string().optional(), // 广告图
phone: z.string().optional().default(''), // 电话
allowApply: z.boolean().optional().default(false), // 是否允许体验
subscribeType: z.number().optional(), // 订阅类型 0免费订阅 1厂商订阅 2用户订阅
badge: z.boolean().optional().default(false), // 注:当前接口没有这个字段,但是会根据 /am/v1/subServer/cornerTag 接口给该模型拼接上该字段,故这里添加一个可选字段并默认为false
});
const bannerSchema = z.object({
id: z.string().optional().default(''), // id
imgUrl: z.string().url(), // 图片
jumpType: z.enum(['noSkip', 'link', 'activity', 'miniApp', 'hotNews']), // 轮播图跳转类型 noSkip无跳转 link链接跳转 activity活动跳转 miniApp应用跳转 hotNews 热点推荐
skipUrl: z.string().optional(), // jumpType 为 'link' 时的跳转链接
activityInfo: z.unknown(), // jumpType 为 'activity' 时的活动信息 这里暂时是 z.unknown() 直接带到旧模块
miniAppInfo: featureSchema.optional(), // jumpType 为 'miniApp' 时的活动信息 这里和精品服务那里的模型是一致的
articleId: z.string().optional(), // jumpType 为 'hotNews' 时的文章id
});
type Banner = z.infer<typeof bannerSchema>;
type Feature = z.infer<typeof featureSchema>;
const bannersSchema = z.array(bannerSchema).optional().default([]);
// 首页轮播图
// {"data":[{"clientId":"","collection":"app_banner","createTime":"2024-08-21 13:45:05","id":"{\"$oid\":\"66c57ee1986acc69b1dab1ee\"}","imgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_0687ad243ffe43498e1bac2c16f47181.png","jumpType":"noSkip","linkType":"","skipUrl":"","sortNum":1,"title":"1234"},{"activityId":"c41d2fc4743f4093b0f7a0a49f81bc8f","activityInfo":{"activityId":"c41d2fc4743f4093b0f7a0a49f81bc8f","activityName":"活动99","activityPageImgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_5f5f5918693d45369cdc8b1bbec48698.jpg","activityPrice":0,"activityPriceWithYuan":"0","activityWindowImgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_022c001bbc444cd58304c7ff4cf4cc2c.jpg","activityfloatImgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_10efc2e99e93468fb50404eb74370d91.png","collection":"app_activity","commodityTime":30,"createTime":"2022-03-26 16:57:04","del":0,"endTime":"2022-06-09 00:00:00","explain":"ok","id":"{\"$oid\":\"623ed560986acc03223d186d\"}","minAppVersion":"99","nSId":"012","price":100,"priceWithYuan":"1","startTime":"2022-03-26 00:00:00","templateId":"02fceff4348541f280f06b338b6349e1","updateTime":"2022-05-31 17:17:49"},"clientId":"","collection":"app_banner","createTime":"2024-08-21 13:45:05","id":"{\"$oid\":\"66c57ee1986acc69b1dab1ef\"}","imgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_0c39dbf709304a5ca347a9cb1b2f8894.png","jumpType":"activity","linkType":"","skipUrl":"","sortNum":2,"title":"测试1"},{"clientId":"","collection":"app_banner","createTime":"2024-08-21 13:45:05","id":"{\"$oid\":\"66c57ee1986acc69b1dab1f0\"}","imgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_bda974c012b844d9878b05b0e134849d.png","jumpType":"link","linkType":"https://","skipUrl":"https://dev.51trust.com/ketang/index.html?appId=Y_T_A2411062250","sortNum":3,"title":"医信课堂"},{"clientId":"","collection":"app_banner","createTime":"2024-08-21 13:45:05","id":"{\"$oid\":\"66c57ee1986acc69b1dab1f1\"}","imgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_b5fa8ec8dc8c4326b45fb04c3f5c7969.jpg","jumpType":"link","linkType":"https://","skipUrl":"https://https://blog.csdn.net/kl222/article/details/84939135?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-84939135-blog-115694803.235^v43^pc_blog_bottom_relevance_base7&spm=1001.2101.3001.4242.1&utm_relevant_index=3","sortNum":4,"title":"掌上病历介绍"},{"clientId":"","collection":"app_banner","createTime":"2024-08-21 13:45:05","id":"{\"$oid\":\"66c57ee1986acc69b1dab1f2\"}","imgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_a18ebcce9d2446c88e12c6675f02a5f9.jpg","jumpType":"miniApp","linkType":"","miniAppInfo":{"advertisePic":"https://tms-dev.oss-cn-beijing.aliyuncs.com/doctorHelper/advertPic_Y_T_A2310053073.png","allowApply":true,"cornerTagUrl":"","createTime":"2023-08-30 10:37:06","icon":"https://tms-dev.oss-cn-beijing.aliyuncs.com/doctorHelper/docIcon_Y_T_A2310053073.png","link":"ywxApp://FollowUpCenter","name":"随访中心","note":"随访中心","phone":"18811061787","recommend":true,"serviceType":4,"sort":0,"status":1,"subscribeType":1,"uniqueId":"Y_T_A2310053073","updateTime":"2024-08-30 15:15:32"},"nsId":"Y_T_A2310053073","skipUrl":"","sortNum":5,"title":"标题"},{"articleId":"2","clientId":"","collection":"app_banner","createTime":"2024-08-21 13:45:05","id":"{\"$oid\":\"66c57ee1986acc69b1dab1f3\"}","imgUrl":"https://tms-dev.oss-cn-beijing.aliyuncs.com/banner/headimg_e26da466ca454f0592321fa7df1c18be.png","jumpType":"noSkip","linkType":"","skipUrl":"","sortNum":6,"title":"标题"}],"message":"success","status":"0"}
const useBannerList = () => {
return useApi('/am/v3/banner/list', 'GET', {}, bannersSchema, {
automatic: true,
loadingDelay: 500,
});
};
export type {Banner, Feature};
export {useBannerList};