You need to sign in or sign up before continuing.
hotProducts.js 6.24 KB
/**
 * 热卖产品 Mock 数据
 *
 * @description 包含项目所有保险类型的产品 mock 数据,用于测试计划书模板显示
 *              遵循项目 mock 数据规范,集成到 src/utils/mockData.js
 * @module api/mock/hotProducts
 * @author Claude Code
 * @created 2026-02-09
 */

/**
 * 热卖产品 Mock 数据列表
 * @description 包含 9 种产品,覆盖所有计划书模板类型
 */
const HOT_PRODUCTS = [
  // ====== 人寿保险 (LifeInsuranceTemplate) ======

  {
    id: 1,
    product_name: 'WIOP3E 盈传创富保障计划 3 - 优选版',
    name: 'WIOP3E 盈传创富保障计划 3 - 优选版',
    recommend: 'hot',
    form_sn: 'life-insurance-wiop3e', // 对应 LifeInsuranceTemplate
    categories: [
      { id: 'life', name: '人寿保险' }
    ],
    tags: [
      { id: 't1', name: '终身寿险', bg_color: '#DBEAFE', text_color: '#1E40AF' },
      { id: 't2', name: '美元产品', bg_color: '#DCFCE7', text_color: '#166534' }
    ],
    cover_image: 'https://picsum.photos/seed/wiop3e/400/300'
  },

  {
    id: 2,
    product_name: 'WIOP3 盈传创富保障计划 3',
    name: 'WIOP3 盈传创富保障计划 3',
    recommend: 'hot',
    form_sn: 'life-insurance-wiop3', // 对应 LifeInsuranceTemplate
    categories: [
      { id: 'life', name: '人寿保险' }
    ],
    tags: [
      { id: 't1', name: '终身寿险', bg_color: '#DBEAFE', text_color: '#1E40AF' },
      { id: 't2', name: '美元产品', bg_color: '#DCFCE7', text_color: '#166534' }
    ],
    cover_image: 'https://picsum.photos/seed/wiop3/400/300'
  },

  // ====== 重疾保险 (CriticalIllnessTemplate) ======

  {
    id: 3,
    product_name: 'MPC 守护无间重疾',
    name: 'MPC 守护无间重疾',
    recommend: 'hot',
    form_sn: 'critical-illness-mpc', // 对应 CriticalIllnessTemplate
    categories: [
      { id: 'critical', name: '重疾保险' }
    ],
    tags: [
      { id: 't1', name: '重疾保障', bg_color: '#FEF3C7', text_color: '#92400E' },
      { id: 't2', name: '终身保障', bg_color: '#E0E7FF', text_color: '#3730A3' }
    ],
    cover_image: 'https://picsum.photos/seed/mpc/400/300'
  },

  {
    id: 4,
    product_name: 'MBC PRO 活跃人生重疾保 PRO',
    name: 'MBC PRO 活跃人生重疾保 PRO',
    recommend: 'hot',
    form_sn: 'critical-illness-mbc-pro', // 对应 CriticalIllnessTemplate
    categories: [
      { id: 'critical', name: '重疾保险' }
    ],
    tags: [
      { id: 't1', name: '重疾保障', bg_color: '#FEF3C7', text_color: '#92400E' },
      { id: 't2', name: 'PRO 版本', bg_color: '#FEE2E2', text_color: '#991B1B' }
    ],
    cover_image: 'https://picsum.photos/seed/mbc-pro/400/300'
  },

  {
    id: 5,
    product_name: 'MBC2 活跃人生重疾保 2',
    name: 'MBC2 活跃人生重疾保 2',
    recommend: 'hot',
    form_sn: 'critical-illness-mbc2', // 对应 CriticalIllnessTemplate
    categories: [
      { id: 'critical', name: '重疾保险' }
    ],
    tags: [
      { id: 't1', name: '重疾保障', bg_color: '#FEF3C7', text_color: '#92400E' },
      { id: 't2', name: '升级版', bg_color: '#DCFCE7', text_color: '#166534' }
    ],
    cover_image: 'https://picsum.photos/seed/mbc2/400/300'
  },

  // ====== 储蓄型产品 (SavingsTemplate) ======

  {
    id: 6,
    product_name: 'GS 宏挚传承保障计划',
    name: 'GS 宏挚传承保障计划',
    recommend: 'hot',
    form_sn: 'savings-gs', // 对应 SavingsTemplate
    categories: [
      { id: 'savings', name: '储蓄保险' }
    ],
    tags: [
      { id: 't1', name: '储蓄型', bg_color: '#E0E7FF', text_color: '#3730A3' },
      { id: 't2', name: '传承规划', bg_color: '#F3E8FF', text_color: '#6B21A8' }
    ],
    cover_image: 'https://picsum.photos/seed/gs/400/300'
  },

  {
    id: 7,
    product_name: 'GC 宏挚家传保险计划',
    name: 'GC 宏挚家传保险计划',
    recommend: 'hot',
    form_sn: 'savings-gc', // 对应 SavingsTemplate
    categories: [
      { id: 'savings', name: '储蓄保险' }
    ],
    tags: [
      { id: 't1', name: '储蓄型', bg_color: '#E0E7FF', text_color: '#3730A3' },
      { id: 't2', name: '家庭保障', bg_color: '#FEE2E2', text_color: '#991B1B' }
    ],
    cover_image: 'https://picsum.photos/seed/gc/400/300'
  },

  {
    id: 8,
    product_name: 'FA 宏浚传承保障计划',
    name: 'FA 宏浚传承保障计划',
    recommend: 'hot',
    form_sn: 'savings-fa', // 对应 SavingsTemplate
    categories: [
      { id: 'savings', name: '储蓄保险' }
    ],
    tags: [
      { id: 't1', name: '储蓄型', bg_color: '#E0E7FF', text_color: '#3730A3' },
      { id: 't2', name: '财富传承', bg_color: '#FEF3C7', text_color: '#92400E' }
    ],
    cover_image: 'https://picsum.photos/seed/fa/400/300'
  },

  {
    id: 9,
    product_name: 'LV2 赤霞珠终身寿险计划2',
    name: 'LV2 赤霞珠终身寿险计划2',
    recommend: 'hot',
    form_sn: 'savings-lv2', // 对应 SavingsTemplate
    categories: [
      { id: 'savings', name: '储蓄保险' }
    ],
    tags: [
      { id: 't1', name: '储蓄型', bg_color: '#E0E7FF', text_color: '#3730A3' },
      { id: 't2', name: '终身寿险', bg_color: '#DBEAFE', text_color: '#1E40AF' }
    ],
    cover_image: 'https://picsum.photos/seed/lv2/400/300'
  }
]

/**
 * Mock: listAPI (热卖产品)
 * @description 专门用于首页热卖产品的 Mock API,支持 form_sn 字段
 * @param {Object} params - 请求参数
 * @param {string} params.recommend - 推荐位(必须为 'hot')
 * @returns {Promise<Object>} 模拟的 API 响应
 */
export async function mockHotProductsListAPI(params) {
  const { recommend } = params

  // 只返回热卖产品
  if (recommend !== 'hot') {
    return { code: 0, msg: '只支持热卖产品查询', data: { list: [], total: 0 } }
  }

  // 模拟网络延迟
  await new Promise(resolve => setTimeout(resolve, 200))

  console.log('[Mock] hotProductsListAPI - 返回热卖产品', HOT_PRODUCTS.length, '条')

  return {
    code: 1,
    msg: 'success',
    data: {
      list: HOT_PRODUCTS,
      total: HOT_PRODUCTS.length,
      categories: [
        { id: 'life', name: '人寿保险' },
        { id: 'critical', name: '重疾保险' },
        { id: 'savings', name: '储蓄保险' }
      ]
    }
  }
}

/**
 * 导出 Mock API 函数供其他模块使用
 */
export default {
  mockHotProductsListAPI
}