map_activity.js 5.92 KB
import { fn, fetch } from '@/api/fn'

const Api = {
  Checkin: '/srv/?a=map_activity&t=checkin',
  Detail: '/srv/?a=map_activity&t=detail',
  IsChecked: '/srv/?a=map_activity&t=is_checked',
  List: '/srv/?a=map_activity&t=list',
  Poster: '/srv/?a=map_activity&t=poster',
  SavePosterBackground: '/srv/?a=map_activity&t=save_poster_background',
  ScanStageList: '/srv/?a=map_activity&t=scan_stage_list',
  ScanStageDetail: '/srv/?a=map_activity&t=scan_stage_detail',
  SubmitScanCheckin: '/srv/?a=map_activity&t=checkin',
}

/**
 * @description 打卡
 * @remark
 * @param {Object} params 请求参数
 * @param {string} params.activity_id (可选) 活动ID
 * @param {string} params.detail_id (可选) 打卡点ID
 * @param {string} params.openid (可选)
 * @returns {Promise<{
 *   code: number; // 状态码
 *   msg: string; // 消息
 *   data: any;
 * }>}
 */
export const checkinAPI = params => fn(fetch.post(Api.Checkin, params))

/**
 * @description 地图活动详情
 * @remark
 * @param {Object} params 请求参数
 * @param {string} params.id (可选) 活动ID
 * @returns {Promise<{
 *   code: number; // 状态码
 *   msg: string; // 消息
 *   data: {
    url: string; // 地图网址
    id: integer; // 活动ID
    type: string; // 打卡类型,MAP=地图打卡,QR_CODE=扫码打卡
    booth_images: Array<string>; // 打卡点图片列表
    cover: string; // 封面图
    begin_date: string; // 开始时间
    end_date: string; // 结束时间
    is_ended: boolean; // 活动是否已经结束
    is_begin: boolean; // 活动是否开始
    first_checkin_points: integer; // 首次打卡获得积分
    required_checkin_count: integer; // 需要打卡几次,才能完成活动
    complete_points: integer; // 完成活动获得多少积分
    discount_title: string; // 打卡点底部优惠标题
    title: string; // 标题
 *   };
 * }>}
 */
export const detailAPI = params => fn(fetch.get(Api.Detail, params))

/**
 * @description 是否已经打卡
 * @remark
 * @param {Object} params 请求参数
 * @param {string} params.detail_id (可选) 打卡点ID
 * @param {string} params.openid (可选)
 * @param {string} params.activity_id (可选) 活动ID
 * @returns {Promise<{
 *   code: number; // 状态码
 *   msg: string; // 消息
 *   data: {
    is_checked: boolean; // 是否已经打卡
 *   };
 * }>}
 */
export const isCheckedAPI = params => fn(fetch.get(Api.IsChecked, params))

/**
 * @description 地图活动列表
 * @remark
 * @param {Object} params 请求参数
 * @returns {Promise<{
 *   code: number; // 状态码
 *   msg: string; // 消息
 *   data: Array<{
    url: string; // 地图网址
    id: integer; // 活动ID
    cover: string; // 封面图
    begin_date: string; // 开始时间
    end_date: string; // 结束时间
    title: string; // 标题
 *   }>;
 * }>}
 */
export const listAPI = params => fn(fetch.get(Api.List, params))

/**
 * @description 获取扫码关卡列表
 * @param {Object} params 请求参数
 * @param {string} [params.page] 页码,从 0 开始
 * @param {string} [params.limit] 每页条数
 * @param {string} [params.activity_id] 活动ID
 * @returns {Promise<{
 *   code: number;
 *   msg: string;
 *   data: {
 *     stages: Array<{
 *       id: number;
 *       code: string;
 *       title: string;
 *       is_checked: boolean;
 *     }>;
 *   };
 * }>}
 */
export const getScanStageListAPI = params => fn(fetch.get(Api.ScanStageList, params))

/**
 * @description 获取扫码关卡详情
 * @param {Object} params 请求参数
 * @param {string} params.id 关卡ID
 * @returns {Promise<{
 *   code: number;
 *   msg: string;
 *   data: {
 *     id: number;
 *     title: string;
 *     banner: Array<string>;
 *     is_checked: boolean;
 *     discount_title: string;
 *     note: string;
 *     introduction: string;
 *     geo_enabled: boolean;
 *     center_lng: number;
 *     center_lat: number;
 *     radius_meters: number;
 *   };
 * }>}
 */
export const getScanStageDetailAPI = params => fn(fetch.get(Api.ScanStageDetail, params))

/**
 * @description 提交扫码打卡
 * @param {Object} params 请求参数
 * @param {string} params.activity_id 活动ID
 * @param {string} params.detail_id 关卡ID
 * @param {string} [params.openid] 用户openid
 * @returns {Promise<{
 *   code: number;
 *   msg: string;
 *   data: any;
 * }>}
 */
export const submitScanCheckinAPI = params => fn(fetch.post(Api.SubmitScanCheckin, params))

/**
 * @description 获取海报
 * @remark
 * @param {Object} params 请求参数
 * @param {string} params.activity_id (可选) 活动ID
 * @param {string} params.detail_id (可选) 关卡ID
 * @param {string} params.env_version (可选) 小程序版本。正式版为 "release",体验版为 "trial"。默认是正式版
 * @returns {Promise<{
 *   code: number; // 状态码
 *   msg: string; // 消息
 *   data: {
    details: Array<{
      id: integer; // 关卡ID
      name: string; // 关卡名称
      background_url: string; // 关卡背景图
      main_slogan: string; //
      sub_slogan: string; //
      is_checked: boolean; // 是否已经打卡
    }>;
    family: {
      id: integer; // 家庭ID
      name: string; // 家庭名称
      avatar_url: string; // 家庭头像
    };
    show_detail_index: integer; // 从 0 开始计数
    end_date: string; // 活动截止时间
    qrcode_url: string; // 小程序码
    title: string; // 海报标题
    begin_date: string; // 活动开始日期
 *   };
 * }>}
 */
export const posterAPI = params => fn(fetch.get(Api.Poster, params))

/**
 * @description 上传海报背景
 * @remark
 * @param {Object} params 请求参数
 * @param {string} params.activity_id (可选) 活动ID
 * @param {string} params.detail_id (可选) 打卡点ID
 * @param {string} params.poster_background_url (可选) 关卡海报背景
 * @returns {Promise<{
 *   code: number; // 状态码
 *   msg: string; // 消息
 *   data: any;
 * }>}
 */
export const savePosterBackgroundAPI = params => fn(fetch.post(Api.SavePosterBackground, params))