appReport.js 2.32 KB
'use strict'
import { APP_REPORT } from '../libs/request';
import md5 from '../vendors/md5';

let getDeviceInfo = function (app) {
  let ak = 'yohobuy_mp';//

  let systemInfo = app.globalData.systemInfo
  let device = {}

  let union_type = app.getUnion_type();
  device.ak = ak
  device.udid = app.globalData.udid ? app.globalData.udid : '';
  device.ch = `${union_type}`;
  device.os = "weixinapp"
  device.osv = systemInfo && systemInfo.version ? systemInfo.version:''
  device.dm = systemInfo && systemInfo.model ? systemInfo.model.replace(' ', '_'):''

  if (systemInfo.platform == 'ios'){
    //针对ios设备,特殊处理dm,转为iphone_7这种格式
    var start_num = device.dm.indexOf('<')
    var end_num = device.dm.indexOf('>')
    var deviceModel
    if (start_num != 0 && end_num != 0) {
      deviceModel = device.dm.substring(start_num + 1, end_num)
      if (deviceModel.length > 0) {
        deviceModel = deviceModel.replace(',', '_')
        device.dm = deviceModel
      }
    }
  }

  return device;
}

let appReport = function(reportType, pt, pn, param,appObject) {
  let app = appObject;

  let deviceInfo = getDeviceInfo(app)
  if (!pt || !pn || !deviceInfo || !deviceInfo.dm) return;
  if(!param)param = {};
  if(!reportType)reportType='hb';

  let ts = new Date().getTime() + '000000';
  let uid = app && app.globalData && app.globalData.userInfo && app.globalData.userInfo.uid ? md5(`${app.globalData.userInfo.uid}`) : '';

  if(!uid){
    uid = md5(`${app.getUid()}`);
  }

  let sid = app && app.globalData && app.globalData.sid ? app.globalData.sid : '';

  let networkType = app && app.globalData && app.globalData.networkType ? app.globalData.networkType : '0';

  let event = {}
  event.ps = '0',
  event.av = config.apiParams.app_version,
  event.ab = config.apiParams.app_build,
  event.ca = '0',
  event.net = networkType,
  event.sid = sid,
  event.uid = uid,
  event.ts = ts,
  event.pt = pt,
  event.pn = pn,
  event.param = param

  let events = [];
  events.push(event)

  //组装最终要上报的数据
  let parameters = {};
  parameters.type = reportType,
  parameters.device = deviceInfo,
  parameters.events = events,


  APP_REPORT(config.domains.app_report_host, parameters)
    .then(function (data) {
    //  console.log(data)
    })
    .catch(function (error) {
    });

}

module.exports = {
  appReport, 
}